如何在ffmpeg-python中使用concat-demuxer?能否无需TXT文件?
不用TXT文件使用ffmpeg concat-demuxer合并视频(Python实现)
完全可以不用TXT文件,通过**标准输入(stdin)**直接传递文件列表给ffmpeg的concat-demuxer,避免生成临时文件,效率更高。
实现代码
import subprocess # 要合并的视频文件列表 video_paths = ["video_01.mp4", "video_02.mp4", "video_03.mkv"] output_path = "final_merged_video.mp4" # 构造ffmpeg命令,-i - 表示从标准输入读取concat列表 ffmpeg_cmd = [ "ffmpeg", "-f", "concat", "-safe", "0", # 处理带特殊字符/绝对路径的文件必须加 "-i", "-", "-c", "copy", # 直接复制流,速度最快(要求视频参数一致) output_path ] # 构造concat格式的输入内容,每行对应一个视频文件 concat_input = "\n".join([f"file '{path}'" for path in video_paths]).encode("utf-8") # 执行命令并传递输入内容 subprocess.run(ffmpeg_cmd, input=concat_input, check=True)
关键说明
-i -:告诉ffmpeg从标准输入读取concat-demuxer需要的文件列表,替代传统的TXT文件。-safe 0:如果你的视频路径包含空格、特殊字符或者是绝对路径,必须添加此参数,否则ffmpeg会因安全限制拒绝读取。-c copy:仅当所有视频的编码格式、分辨率、帧率、音频参数完全一致时使用,实现无损快速合并;如果参数不一致,去掉此参数让ffmpeg自动重新编码(速度会变慢,但兼容性更好)。
内容的提问来源于stack exchange,提问作者user12355248
相关产品推荐
相关产品推荐

