Fix path for Lnux

This commit is contained in:
Luigi 2024-01-04 16:51:41 +01:00 committed by GitHub
parent 1be61b7338
commit 5c571a63b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 9 deletions

View File

@ -6,6 +6,7 @@ from functools import partial
from multiprocessing.dummy import Pool from multiprocessing.dummy import Pool
from tqdm.rich import tqdm from tqdm.rich import tqdm
import moviepy.editor as mp import moviepy.editor as mp
from Stream.util.platform import *
# Class import # Class import
#from Stream.util.console import console #from Stream.util.console import console
@ -33,6 +34,9 @@ class Video_Decoder(object):
self.iv = x_key["IV"].lstrip("0x") if "IV" in x_key.keys() else "" self.iv = x_key["IV"].lstrip("0x") if "IV" in x_key.keys() else ""
def decode_aes_128(self, video_fname: str): def decode_aes_128(self, video_fname: str):
if is_platform_linux():
frame_name = video_fname.split("/")[-1].split("-")[0] + ".ts"
else:
frame_name = video_fname.split("\\")[-1].split("-")[0] + ".ts" frame_name = video_fname.split("\\")[-1].split("-")[0] + ".ts"
res_cmd = subprocess.run(["openssl","aes-128-cbc","-d","-in", video_fname,"-out", "ou_ts/"+frame_name,"-nosalt","-iv", self.iv,"-K", self.uri ], capture_output=True) res_cmd = subprocess.run(["openssl","aes-128-cbc","-d","-in", video_fname,"-out", "ou_ts/"+frame_name,"-nosalt","-iv", self.iv,"-K", self.uri ], capture_output=True)
@ -56,6 +60,7 @@ def save_in_part(folder_ts, merged_mp4, file_extension = ".ts"):
# Get list of ts file in order # Get list of ts file in order
os.chdir(folder_ts) os.chdir(folder_ts)
# Order all ts file # Order all ts file
try: ordered_ts_names = sorted(glob.glob(f"*{file_extension}"), key=lambda x:float(re.findall("(\d+)", x.split("_")[1])[0])) try: ordered_ts_names = sorted(glob.glob(f"*{file_extension}"), key=lambda x:float(re.findall("(\d+)", x.split("_")[1])[0]))
except: except:
@ -76,11 +81,16 @@ def save_in_part(folder_ts, merged_mp4, file_extension = ".ts"):
#console.log(f"[blue]Process part [green][[red]{part}[green]]") #console.log(f"[blue]Process part [green][[red]{part}[green]]")
list_mp4_part.append(f"{part}.mp4") list_mp4_part.append(f"{part}.mp4")
with open(f"{part}_concat.txt", "w") as f: with open(f"{part}_concat.txt", "w") as f:
for i in range(start, end): for i in range(start, end):
f.write(f"file {ordered_ts_names[i]} \n") f.write(f"file {ordered_ts_names[i]} \n")
# try:
# ffmpeg.input(f"{part}_concat.txt", format='concat', safe=0).output(f"{part}.mp4", c='copy', loglevel="quiet").run(capture_stdout=True, capture_stderr=True)
# except ffmpeg.Error as e:
# print('stderr:', e.stderr.decode('utf8'))
ffmpeg.input(f"{part}_concat.txt", format='concat', safe=0).output(f"{part}.mp4", c='copy', loglevel="quiet").run(capture_stdout=True, capture_stderr=True)
ffmpeg.input(f"{part}_concat.txt", format='concat', safe=0).output(f"{part}.mp4", c='copy', loglevel="quiet").run()
# Save first part # Save first part
save_part_ts(start, end, part) save_part_ts(start, end, part)
@ -108,6 +118,11 @@ def save_in_part(folder_ts, merged_mp4, file_extension = ".ts"):
ffmpeg.input("part_list.txt", format='concat', safe=0).output(merged_mp4, c='copy', loglevel="quiet").run() ffmpeg.input("part_list.txt", format='concat', safe=0).output(merged_mp4, c='copy', loglevel="quiet").run()
# try:
# ffmpeg.input("part_list.txt", format='concat', safe=0).output(merged_mp4, c='copy', loglevel="quiet").run(capture_stdout=True, capture_stderr=True)
# except ffmpeg.Error as e:
# print('stderr:', e.stderr.decode('utf8'))
def download_ts_file(ts_url: str, store_dir: str, headers): def download_ts_file(ts_url: str, store_dir: str, headers):
# Get ts name and folder # Get ts name and folder
@ -198,7 +213,7 @@ def dw_m3u8(m3u8_link, m3u8_content, m3u8_headers="", decrypt_key="", merged_mp4
pool.join() pool.join()
if is_encryped: if is_encryped:
for ts_fname in tqdm(glob.glob("temp_ts\*.ts"), desc="[yellow]Decoding"): for ts_fname in tqdm(glob.glob("temp_ts/*.ts"), desc="[yellow]Decoding"):
video_decoder.decode_aes_128(ts_fname) video_decoder.decode_aes_128(ts_fname)
# Start to merge all *.ts files # Start to merge all *.ts files
@ -211,6 +226,14 @@ def dw_m3u8(m3u8_link, m3u8_content, m3u8_headers="", decrypt_key="", merged_mp4
os.chdir("..") os.chdir("..")
console.log("[green]Clean") console.log("[green]Clean")
if is_platform_linux():
if is_encryped:
shutil.move("ou_ts/"+merged_mp4 , main_out_folder+"/")
else:
shutil.move("temp_ts/"+merged_mp4 , main_out_folder+"/")
else:
if is_encryped: if is_encryped:
shutil.move("ou_ts\\"+merged_mp4 , main_out_folder+"\\") shutil.move("ou_ts\\"+merged_mp4 , main_out_folder+"\\")
else: else:

7
Stream/util/platform.py Normal file
View File

@ -0,0 +1,7 @@
import platform
def is_platform_windows():
return platform.system() == "Windows"
def is_platform_linux():
return platform.system() == "Linux"