当第一个视频没有音轨时,将视频与ffmpeg串联会生成无声视频


4

我有3个mp4文件:

  • 1.mp4-有视频,无音频
  • 2.mp4-具有视频和音频
  • 3.mp4-具有视频和音频

我创建了一个剪辑文件(clips.txt)进行串联:

file '1.mp4'
file '2.mp4'
file '3.mp4'

我运行以下命令行:

ffmpeg -f concat -i "clips.txt" -c:a aac -b:a 160k -y "out.mp4"

产生的文件有视频但没有音频,大概是因为1.mp4没有音轨。

如果我重新排列clips.txt而不是1.mp4,则out.mp4有音轨。

有没有一种方法可以强制ffmpeg使用音频?我想它必须为任何无声视频产生无声音轨。

谢谢!


或先在无声音的轨道上添加无声轨道,有关一些想法,请参见stackoverflow.com/questions/11779490/…
Psycogeek '16

那就是我当时想做的。我一直希望有一个更清洁的解决方案,但我决定坚持下去。
菲尔

Answers:


7

对于偶然发现此问题并想要实现与我相同的目标的任何人,我可以通过以下方式解决:

ffmpeg -i "1.mp4" -f lavfi -i aevalsrc=0 -shortest -y "new_1.mp4"

这是什么意思:

  • 取1.mp4(这是不含音频的视频片段)(-i“ 1.mp4”)
  • 生成所需的最小静音(-f lavfi -i aevalsrc = 0-最短)
  • 输出结果(-y“ new_1.mp4”)

从这里像以前一样进行连接,但是将clips.txt中的“ 1.mp4”替换为“ new_1.mp4”


2
对于静音音频,请确保匹配其他输入的通道布局和采样率。例如,44.1kHz立体声音频:(-i anullsrc=cl=stereo:r=44100这些是anullsrc滤波器的默认设置)。
llogan

哦。我不知道那样做。谢谢!
菲尔

2
另外,请考虑添加-c:v copy仅重新混合视频,而不是对其进行重新编码。
llogan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.