鱼C论坛

 找回密码
 立即注册
查看: 172|回复: 4

[已解决]ffmpeg 的copy 与 filter 同时用?

[复制链接]
发表于 2024-5-25 17:49:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
要把 视频+声音+音乐+字幕1+字幕2  烧录起来, 下面的命令怎么改才行呢?

os.system(f"""ffmpeg -i 1.mp4 -i 1.mp3 -i music.mp3 -map 0:v -map 1:a -map 2:a -metadata:s:a:0 language=eng -metadata:s:a:0 title="eng1" -metadata:s:a:1 language=sme -metadata:s:a:1 title="background" -c:v copy -c:a copy -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'\,subtitles=2.srt:force_style='Fontsize=10\,Fontname=黑体\,MarginV=02\,BorderStyle=1\,Outline=1\,Shadow=0\,PrimaryColour=&HFFFFFF&\,OutlineColour=&H5A6A83&\,Spacing=0' -b:v 3000k ok.mp4 """)

最佳答案
2024-5-25 23:19:46
blackantt 发表于 2024-05-25 23:19
用这个参数  -i 1.mp3 -i music.mp3 合成视频  ,  1.m ...


问题可能是由于音频流的混合而导致的。当你在ffmpeg命令中使用多个`-i`参数来指定输入音频文件时,ffmpeg会自动将这些音频流混合到一个输出文件中。默认情况下,只有最后一个输入文件的音频流会发出声音,其他的音频流将被忽略。

如果你想同时播放两个音频流,你可以使用`amix`滤镜来将它们混合在一起。下面是一个示例命令,演示了如何使用`amix`滤镜将两个音频流混合在一起:
import os

command = 'ffmpeg -i 1.mp4 -i 1.mp3 -i music.mp3 '

# 视频流
command += '-map 0:v '

# 音频流
command += '-map 1:a -map 2:a '

# 混音滤镜
command += '-filter_complex "[1:a][2:a]amix=inputs=2:duration=first:dropout_transition=3" '

# 输出文件
command += 'ok.mp4'

os.system(command)

这个命令将使用`-filter_complex`选项来定义复杂的滤镜图表,其中使用`amix`滤镜将两个音频流混合在一起。`inputs=2`表示有两个输入流,`duration=first`表示输出音频流的持续时间与第一个输入音频流的持续时间相同,`dropout_transition=3`表示进行平滑的渐变过渡。

请确保已安装ffmpeg并将其路径添加到系统环境变量中。上述命令将同时播放两个音频文件,并将混合后的音频与视频合成为一个输出文件(ok.mp4)。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-25 17:49:48 | 显示全部楼层
要在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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-25 23:19:34 | 显示全部楼层
用这个参数  -i 1.mp3 -i music.mp3 合成视频  ,  1.mp3和music.mp3 里只有一个音轨能发声,是咋回事呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-25 23:19:46 | 显示全部楼层    本楼为最佳答案   
blackantt 发表于 2024-05-25 23:19
用这个参数  -i 1.mp3 -i music.mp3 合成视频  ,  1.m ...


问题可能是由于音频流的混合而导致的。当你在ffmpeg命令中使用多个`-i`参数来指定输入音频文件时,ffmpeg会自动将这些音频流混合到一个输出文件中。默认情况下,只有最后一个输入文件的音频流会发出声音,其他的音频流将被忽略。

如果你想同时播放两个音频流,你可以使用`amix`滤镜来将它们混合在一起。下面是一个示例命令,演示了如何使用`amix`滤镜将两个音频流混合在一起:
import os

command = 'ffmpeg -i 1.mp4 -i 1.mp3 -i music.mp3 '

# 视频流
command += '-map 0:v '

# 音频流
command += '-map 1:a -map 2:a '

# 混音滤镜
command += '-filter_complex "[1:a][2:a]amix=inputs=2:duration=first:dropout_transition=3" '

# 输出文件
command += 'ok.mp4'

os.system(command)

这个命令将使用`-filter_complex`选项来定义复杂的滤镜图表,其中使用`amix`滤镜将两个音频流混合在一起。`inputs=2`表示有两个输入流,`duration=first`表示输出音频流的持续时间与第一个输入音频流的持续时间相同,`dropout_transition=3`表示进行平滑的渐变过渡。

请确保已安装ffmpeg并将其路径添加到系统环境变量中。上述命令将同时播放两个音频文件,并将混合后的音频与视频合成为一个输出文件(ok.mp4)。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-26 10:35:31 | 显示全部楼层
虽然我还没有学到这,但是我也先学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 18:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表