Разделение, перекодирование и объединение видеофайлов приводит к щелчку аудио
Мы хотим быстрее кодировать большие видеофайлы. Чтобы ускорить кодирование, мы используем несколько серверов кодирования. Ниже приведен наш процесс кодирования потока
Сначала мы разбиваем видео на маленькие сегменты, используя команду ниже
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
Чтобы заново добавить аудио.