Audio 使用ffmpeg按顺序添加多个音频曲目,并将特定曲目固定到结尾
我有一个没有音轨的视频,想按顺序添加几个音轨(每个音轨紧接着另一个音轨开始) 基本情况可能如下所示:Audio 使用ffmpeg按顺序添加多个音频曲目,并将特定曲目固定到结尾,audio,ffmpeg,Audio,Ffmpeg,我有一个没有音轨的视频,想按顺序添加几个音轨(每个音轨紧接着另一个音轨开始) 基本情况可能如下所示: |-----------VIDEO-----------VIDEO-------------VIDEO-----------VIDEO-----------| |---FULL AUDIO TRACK 1---|---FULL AUDIO TRACK 2---|---PARTIAL AUDIO TRACK 3---| 以下是我实现这一目标的尝试: ffmpeg -i video.mov -
|-----------VIDEO-----------VIDEO-------------VIDEO-----------VIDEO-----------|
|---FULL AUDIO TRACK 1---|---FULL AUDIO TRACK 2---|---PARTIAL AUDIO TRACK 3---|
以下是我实现这一目标的尝试:
ffmpeg -i video.mov -i audio1.mp3 -i audio2.mp3 -i audio3.mp3 -map 0:0 -map 1:0 -map 2:0 -map 3:0 out.mp4
当然,这并没有产生预期的结果。它只使用第一个音乐剪辑in out.mp4,结束时不会启动其他音轨
问题1为了按顺序添加多个音轨,我遗漏了什么?我假设它指定了音频剪辑的起点和终点,但我没有找到语法 此外,我正在寻找一种方法来确保视频以音频曲目3的完整持续时间结束,如下所示:
|-----------VIDEO-----------VIDEO-------------VIDEO-----------VIDEO-----------|
|---FULL AUDIO TRACK 1---|---PARTIAL AUDIO TRACK 2---|---FULL AUDIO TRACK 3---|
在这种情况下,音频轨迹2将被修剪,以便将完整的音频轨迹3固定到末端
问题2这种类型的音频固定可以在FFmpeg中完成,还是必须先用另一个程序修剪音频曲目2?使用atrim、asetpts和concat过滤器:
ffmpeg -i video.mov -i audio1.mp3 -i audio2.mp3 -i audio3.mp3
-filter_complex "[2:a]atrim=duration=5,asetpts=PTS-STARTPTS[a2];[1:a][a2][3:a]concat=n=3:a=1:v=0[a]"
-map 0:v -map "[a]" -c copy -c:a aac -shortest output.mp4
- 修剪音频。如果您喜欢使用
和/或开始
选项而不是结束
,也可以使用这些选项持续时间
- 重置时间戳(concat要求)
- 连接每个音频段
ffprobe
获取每个输入的持续时间:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
然后用它来确定要修剪的音频流的持续时间。使用atrim、asetpts和concat过滤器:
ffmpeg -i video.mov -i audio1.mp3 -i audio2.mp3 -i audio3.mp3
-filter_complex "[2:a]atrim=duration=5,asetpts=PTS-STARTPTS[a2];[1:a][a2][3:a]concat=n=3:a=1:v=0[a]"
-map 0:v -map "[a]" -c copy -c:a aac -shortest output.mp4
- 修剪音频。如果您喜欢使用
和/或开始
选项而不是结束
,也可以使用这些选项持续时间
- 重置时间戳(concat要求)
- 连接每个音频段
ffprobe
获取每个输入的持续时间:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
然后用它来确定要修剪的音频流的持续时间。perfect。我了解了你计算持续时间的方向——但并非所有人都会。我将添加持续时间的简单计算,可能在替换“持续时间=5”时使用注释。例如,duration=audio2.mp3(D)=video.mov(D)-audio3.mp3(D)-audio1.mp3(D),其中(D)是每个命名文件的持续时间。是否有任何方向可以将多个视频源添加到此脚本中,并在它们之间进行1秒的交叉淡入?@kraftydevil See.perfect。我了解了你计算持续时间的方向——但并非所有人都会。我将添加持续时间的简单计算,可能在替换“持续时间=5”时使用注释。例如,duration=audio2.mp3(D)=video.mov(D)-audio3.mp3(D)-audio1.mp3(D),其中(D)是每个命名文件的持续时间。是否有任何方向可以将多个视频源添加到此脚本中,并在它们之间进行1秒的交叉淡入?@kraftydevil请参阅。