我有一个奇怪的问题,一直困扰着我.我正在使用FFmpeg将另一种格式转换为视频; 转换发生在之前,并送入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
Run Code Online (Sandbox Code Playgroud)
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
我为什么一开始就点击/弹出一下?我一直试图解决这个问题很长一段时间.
您似乎在指定输入音频是原始的,但它不是:
$ file debug_audio.wav
debug_audio.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 11025 Hz
Run Code Online (Sandbox Code Playgroud)
所以我想你听到的点击是wav标题被处理为音频.如果删除了相关选项,-f s16le并且-ar 11025,ffmpeg正确地确定音频输入是在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |