要在ffmpeg中同时使用copy和filter是不可能的,因为它们是互斥的选项。当你使用`-c:v copy -c:a copy`时,你将选择完全复制视频和音频数据流而不进行任何编码。这种方式不允许你添加字幕或其他过滤器。
解决方案是使用编码选项(如`-c:v`和`-c:a`)来指定所需的编码器,并使用过滤器选项(如`-vf`)来添加字幕和其他过滤效果。
下面是一个示例命令,演示了如何将视频、音频、音乐和字幕合并到一个文件中:
import os
command = 'ffmpeg -i 1.mp4 -i 1.mp3 -i music.mp3 -i 1.srt -i 2.srt '
# 视频流
command += '-map 0:v '
# 音频流
command += '-map 1:a -map 2:a '
# 字幕流
command += '-scodec mov_text -map 3 -metadata:s:s:0 language=eng -metadata:s:s:0 title="eng1" '
command += '-scodec mov_text -map 4 -metadata:s:s:1 language=sme -metadata:s:s:1 title="background" '
# 编码选项
command += '-c:v libx264 -c:a aac -b:v 3000k -b:a 128k '
# 过滤器选项
command += '-vf "subtitles=1.srt:force_style=\'Fontsize=10,Fontname=黑体,WrapStyle=2,MarginV=30,BorderStyle=1,Outline=1,Shadow=0,PrimaryColour=&HFFFFFF&,OutlineColour=&H853F1B&,Spacing=0\', '
command += 'subtitles=2.srt:force_style=\'Fontsize=10,Fontname=黑体,MarginV=02,BorderStyle=1,Outline=1,Shadow=0,PrimaryColour=&HFFFFFF&,OutlineColour=&H5A6A83&,Spacing=0\'" '
# 输出文件
command += 'ok.mp4'
os.system(command)
请确保已安装ffmpeg并将其路径添加到系统环境变量中。上述命令将使用libx264编码器对视频进行编码,使用aac编码器对音频进行编码,并将两个字幕文件添加到视频中,同时设置了字幕的样式和位置。最终的输出文件名为ok.mp4。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |