我们希望更快地对大型视频文件进行编码。为了加快编码速度,我们使用了多个编码服务器。以下是我们的编码流程
首先,我们使用以下命令将视频分成小段
ffmpeg -i F:\video_data_set\4k_compressed.mp4 -f segment -segment_time 5 -segment_start_number 1 -codec copy -copyts -avoid_negative_ts 1 F:\video_data_set\test\%d_4k_compressed.mp4
然后我们将这些片段划分到多个编码服务器中,每个编码服务器使用以下命令重新编码该片段
ffmpeg -hide_banner -i F:\video_data_set\test\1_4k_compressed.mp4 -c:a aac -ar 44100 -b:a 128k -c:v libx264 -x264opts nal-hrd=cbr:force-cfr=1 -pix_fmt yuv420p -profile:v baseline -level 3.0 -vf "scale=1280:-2,setdar=16:9" -b:v 3.9M -minrate 3.9M -maxrate 3.9M -bufsize 7.8M -preset ultrafast -crf 18 -r 30 -g 30 -threads 8 F:\video_data_set\test\1_4k_compressed_1.mp4
当所有段都重新编码后,我们使用以下命令将它们合并为单个文件
ffmpeg -hide_banner -f concat -safe 0 -i F:\video_data_set\test\files_2.txt -c copy -threads 8 F:\video_data_set\4k_compressed_1.mp4
一切运行良好,但我们面临的问题是每个片段之后输出音频中都会出现咔嗒声。
例如,我已经编码了 5 个片段,持续时间分别为 6、6、3、6 和 6 秒,当我使用上述命令将它们连接起来时,输出视频在视频的第 6、12、15 和 21 秒处有咔嗒声。
您能否帮助我并告诉我这种咔嗒声的原因是什么以及如何修复和消除输出视频中的这种咔嗒声。
答案1
这是一个众所周知的效果:-segment
在有效的视频入口点(即 I 帧)上分割视频,但并不总是在有效的音频入口点上分割视频。
解决此问题的最佳方法是在第一步中分割视频和音频:
ffmpeg -i F:\video_data_set\4k_compressed.mp4 -f segment -segment_time 5 -segment_start_number 1 -c:v copy -an -copyts -avoid_negative_ts 1 F:\video_data_set\test\%d_4k_compressed.mp4 -vn -c:a aac -ar 44100 -b:a 128k F:\video_data_set\test\audio.m4a
然后按照当前工作流程继续处理视频片段。
最后一步使用
ffmpeg -hide_banner -f concat -safe 0 -i F:\video_data_set\test\files_2.txt -i F:\video_data_set\test\audio.m4a -map 0:v -map 1:a -c copy -threads 8 F:\video_data_set\4k_compressed_1.mp4
重新添加音频。