pu369com

python 使用 ffmpeg合成音视频

moviepy太慢了,ffmpeg似乎快一点

1.从github下载安装

https://github.com//BtbN/FFmpeg-Builds/releases  

下载了ffmpeg-master-latest-win64-gpl-shared.zip

 直接解压到某个目录中,如:D:\ffmpeg   ,并添加环境变量,将  D:\ffmpeg  添加到path变量中(win10)
在命令行运行  ffmpeg ,可以了
 2. 在Python中安装ffmpeg
看到了两个库:ffmpeg-python 和  ffmpy ,在pypi上看了一下,两个库最近都有更新
选择用   pip  install  ffmpy
文档在:https://ffmpy3.readthedocs.io/en/latest/
简单需求直接执行ffmpeg命令就好。
如:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4
实现了对两个mp4的快速合并。

参数解释如下:

  • -i input1.mp4 -i input2.mp4: 输入两个视频文件。

  • -filter_complex: 指定复杂的过滤操作。

  • [0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]: 将两个视频流和音频流按顺序合并,n=2 表示有两个输入流,v=1 表示只有视频流被合并,a=1 表示只有音频流被合并,[outv] 和 [outa] 是最终合并后的视频流和音频流的别名。

  • -map "[outv]" -map "[outa]": 指定输出文件应当包含哪些流。

  • output.mp4: 输出文件的名称。

确保两个视频片段的分辨率、帧率等参数是兼容的,否则合并时可能会出错。如果视频间想要有过渡效果或者同步问题,可能需要更复杂的命令或使用其他工具来处理。

如果是合并更多的mp4,可以:

ffmpeg -f concat -i input.txt -c copy output.mp4

其中input.txt是一个文本文件,包含了要合并的视频文件的列表,格式如下:

file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

这个命令会将video1.mp4video2.mp4video3.mp4等视频文件按顺序合并成一个output.mp4文件,同时复制编码信息,以保持视频质量。

如果输入视频的编码不同,或者你想对输出视频进行重新编码,可以去掉-c copy选项,并可以指定新的编码器和参数。例如,使用H.264编码器和1000k的比特率:

 ffmpeg -f concat -i input.txt -c:v libx264 -b:v 1000k -pix_fmt yuv420p -c:a copy output.mp4
这将为输出视频指定新的编码和比特率,同时复制音频流。
 

 

参考:

https://blog.csdn.net/liuyuinsdu/article/details/114646684

https://blog.csdn.net/m0_60565784/article/details/130776330

https://blog.csdn.net/weixin_64670512/article/details/127938350

https://blog.csdn.net/qq_35164554/article/details/124866110

https://blog.csdn.net/yinshipin007/article/details/130996475

https://blog.csdn.net/cheungxiongwei/article/details/130591483

posted on 2024-03-22 16:30  pu369com  阅读(232)  评论(0编辑  收藏  举报

导航