將視頻m4s文件轉換為mp4格式
一般情況:偏大的文件為視頻,偏小的文件為音頻。
環境要求:下載并安裝ffmpeg,并配置好環境變量,如下圖:
轉換代碼:
import subprocessdef merge_m4s_to_mp4(video_path, audio_path, output_path):"""使用 FFmpeg 將 m4s 視頻和音頻流合并為 MP4 文件。:param video_path: 視頻 m4s 文件路徑:param audio_path: 音頻 m4s 文件路徑:param output_path: 輸出的 mp4 文件路徑"""command = ["ffmpeg", "-y", "-i", video_path, "-i", audio_path,"-c:v", "copy", "-c:a", "aac", "-strict", "experimental", output_path]try:subprocess.run(command, check=True)print(f"轉換完成: {output_path}")except subprocess.CalledProcessError as e:print(f"轉換失敗: {e}")if __name__ == "__main__":# 示例:手動指定文件路徑 video_path='1452544206/1452544206-1-30080.m4s',audio_path='1452544206/1452544206-1-30280.m4s'# 示例調用video_file = video_pathaudio_file = audio_pathoutput_file = "output222.mp4"merge_m4s_to_mp4(video_file, audio_file, output_file)
在上述操作前,應先將文件頭的0字符串都刪除,可用notepad++操作,或用python執行如下代碼:
import os def remove_leading_zeros(file_path, save_path=None, backup=True):"""刪除文件頭部全部連續的字符'0':param file_path: 文件路徑 :param save_path: 保存路徑(默認覆蓋原文件):param backup: 是否創建備份 """# 備份機制 if backup:backup_path = file_path + ".bak"os.rename(file_path, backup_path)file_path = backup_path # 讀取二進制內容 with open(file_path, 'rb') as f:content = f.read() # 動態檢測前導0的數量 zero_count = 0 for byte in content:if byte == 0x30: # ASCII字符'0'的十六進制值 zero_count += 1 else:break # 遇到非0字符立即終止 # 截取有效內容 new_content = content[zero_count:]# 保存處理后的文件 save_path = save_path or file_path.replace(".bak", "")with open(save_path, 'wb') as f:f.write(new_content) print(f"已刪除頭部連續{zero_count}個0")if __name__ == "__main__":# 單文件處理示例 remove_leading_zeros("1476061291/1476061291-1-30280.m4s")remove_leading_zeros("1476061291/1476061291-1-100050.m4s")