FFmpeg在音频开头添加点击声

3
我有一个奇怪的问题困扰我已经有一段时间了。我正在使用FFmpeg将另一种格式转换为视频;在最终转换为mp4之前,先进行转换。
奇怪的是,在最终视频中,我似乎会听到一个小的点击声;原始音频中没有这个声音,但它在最终视频中出现了。
这是样本音频。您会注意到在开头没有杂音。
这是原始视频输入
这是我的命令生成的视频
这是我用来复制问题的命令(实际转换是在Python脚本中进行的,通过stdin提供视频和通过临时文件提供音频给FFmpeg)。
cat debug_raw_video.bin| ffmpeg -hide_banner -loglevel info -y -s 256x192 -r 30 -f rawvideo -thread_queue_size 600 -pix_fmt rgb8 -i pipe:0 -f s16le -ar 11025 -ac 1 -guess_layout_max 0 -i ./debug_audio.wav -vcodec libx264 -pix_fmt yuv420p -movflags faststart -acodec aac -strict experimental -vf scale=512:384:flags=neighbor -threads 0 -preset medium -tune animation ./out.mp4

FFmpeg版本:

ffmpeg version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers

我也遇到了这个版本的同样问题:

ffmpeg version 3.3.4-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2017 the FFmpeg developers

为什么开头会有一点咔哒声?我一直在试图找出原因。


1
尝试在音频轨道开头跳过1/2秒左右,看看在时间轴上+跳跃时是否会出现相同的爆炸声。 - Robert Rowntree
我刚刚尝试了在输入音频的-i标志之前指定-itsoffset 00:00:02。没有出现任何问题,尽管视频被略微延长以容纳音频。 - Austin Burk
实际上,当我这样做时会有更多的woosh声(大约在指定的偏移量处开始),而不是点击声。 - Austin Burk
尝试使用音频过滤器来降低问题间隔期间的音量。 - Robert Rowntree
1个回答

6

看起来你指定的输入音频是原始的,但实际上它不是原始的:

$ file debug_audio.wav
debug_audio.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 11025 Hz

我想你听到的是 wav 头文件被当做音频处理所发出的声音。如果我去掉相关选项 -f s16le-ar 11025ffmpeg 将会正确识别音频输入为 wav 格式并且产生无杂音的输出:

cat debug_raw_video.bin | ffmpeg -hide_banner -loglevel info -y -s 256x192 -r 30 -f rawvideo -thread_queue_size 600 -pix_fmt rgb8 -i pipe:0 -ac 1 -i ./debug_audio.wav -vcodec libx264 -pix_fmt yuv420p -movflags faststart -acodec aac -strict experimental -vf scale=512:384:flags=neighbor -threads 0 -preset medium -tune animation ./out.mp4

哇塞!谢谢你!你让我的一天变得更加美好了!它修复得非常好! - Austin Burk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接