我有一个 AC3 5.1 音频文件,我想在开头插入 x 秒的静音音频。这与视频复用无关,因此它的偏移是无用的,因为它似乎只适用于伴随视频的音频流。我想用 ffmpeg 来实现这一点。有任何想法吗?
llo*_*gan 39
如果您想避免重新编码主段,请使用concat demuxer。此方法适用于在开头或结尾(或两者)添加静音。
使用anullsrc音频源过滤器来创建无声音频。您需要匹配主音频文件的格式、通道布局和采样率。制作 5.1 声道、48000 Hz 采样率、1 秒无声 AC3 音频文件的示例(因为这是问题中的格式):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
Run Code Online (Sandbox Code Playgroud)现在创建一个名为的文本文件input.txt
,列出要连接的文件:
file 'silent.ac3'
file 'main.ac3'
Run Code Online (Sandbox Code Playgroud)
如果你想要最后的静音,只需切换input.txt
.
现在您可以使用concat demuxer连接文件:
ffmpeg -f concat -i input.txt -codec copy output.ac3
Run Code Online (Sandbox Code Playgroud)如果您想在一个命令中完成所有操作,或者您想以与输入不同的格式输出(因为此方法无论如何都要重新编码),请使用concat 过滤器。此方法适用于在开头或结尾或两者中添加静音。
在立体声的开头添加 1 秒静音的示例,44100 Hz 采样率输入:
ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
Run Code Online (Sandbox Code Playgroud)
过滤将导致重新编码,而 concat 解复用器则不会。
在anullsrc 中,建议匹配输入的通道布局和采样率。
如果你想沉默添加到末尾,而不只是切换的给予CONCAT滤波器的输入顺序:[1:a][0:a]concat=n=2:v=0:a=1
。
如果您想在一个命令中完成所有操作,或者如果您想以与输入不同的格式输出(因为此方法无论如何都会重新编码),请使用adelay音频过滤器。这仅适用于在文件开头添加静音。
此示例将在立体声输入的开头添加 1 秒的静音:
ffmpeg -i input.flac -af "adelay=1s:all=true" output.opus
Run Code Online (Sandbox Code Playgroud)
如果您ffmpeg
是旧的(版本 4.2),您将需要声明毫秒而不是秒,并为每个通道提供延迟:
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
Run Code Online (Sandbox Code Playgroud)
如果您想在一个命令中完成所有操作,或者您想以与输入不同的格式输出(因为此方法无论如何都会重新编码),请使用apad音频过滤器。这仅适用于在文件末尾添加静音。
此示例将在结尾添加 1 秒的静音:
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
Run Code Online (Sandbox Code Playgroud)
过滤将导致重新编码,而 concat 解复用器则不会。
如果你得到一个错误,Option 'pad_dur' not found
那么你ffmpeg
就太老了。使用版本 ?4.2。
归档时间: |
|
查看次数: |
35258 次 |
最近记录: |