Я пишу сценарий python, который использует подпроцесс для вызова FFMPEG без использования pyffmpeg.
Мой сценарий генерирует переменное число файлов MP4 с использованием аудиокода AA C c, и объединяет их вместе, используя FFMPEG. Вот как я создаю каждый клип:
ffmpeg -loop 1 -i image.jpg -i recording.mp3 -tune stillimage -c:a aac -b:a 256k -shortest clip.mp4
Команда, которую я использую для их объединения:
ffmpeg -f concat -i clip_names.txt -c copy video_raw.mp4
Затем я беру это результирующее видео и смешиваю цикл аудио трек над ним, и отрегулируйте громкость. (Извините за ужасное форматирование)
ffmpeg -i video_raw -filter_complex
"amovie=Tracks/Breaktime.mp3:loop=0,
volume=0.1,
asetpts=N/SR/TB[aud];
[0:a][aud]amix[a]"
-map 0:v -map [a] -b:a 256k -shortest final_video.mp4
Эти команды, кажется, работают так, как я намереваюсь. Когда я играю в MP4 с моего локального компьютера, все воспроизводится без проблем.
Однако я загрузил видео на YouTube и столкнулся с проблемами. Когда видео воспроизводится с YouTube, на каждой временной отметке, где два клипа были объединены, перед началом следующего клипа остается около секунды тишины. Я пробовал это из Chrome, IE и Firefox, все с одинаковыми проблемами.
Исходя из того, что я изучил до сих пор, я думаю, что это может быть проблемой с как обрабатываются образцы грунтовки каждого отдельного клипа. Я не обязан продолжать использовать MP4 или AA C, поэтому, если использовать другой аудио / видео код c будет работать лучше, не стесняйтесь предлагать!
Есть ли какой-то тип манипуляции, который я могу делать в FFMPEG избавление от образцов грунтовки или как-то иначе обрабатывать их? В конце я ищу каждый клип для воспроизведения без задержки, которую вставляет операция concat. Спасибо!