Как объединить файлы MP4 с разной частотой кадров и разной частотой дискретизации звука

4594
Rob42

У меня есть четыре файла MP4 с именами «file_1», «file_2», «file_3» и «file_4», и я хочу объединить их в один файл в следующем порядке: file_1, file_2, file_3 и file_4.

file_1 имеет следующие характеристики:

frame width = 640 frame height = 480 frame rate = 29 frames/second audio sample rate = 44kHz 

file_2, file_3 и file_4 каждый имеет следующие характеристики:

frame width = 640 frame height = 480 frame rate = 30 frames/second audio sample rate = 48kHz 

Используя функцию добавления в Avidemux v2.5.4, я объединил file_2 и file_3 в file_2_3, а аудио и видео остались синхронизированными в file_2_3. Затем, снова используя функцию «добавления», я объединил file_2_3 и file_4 в file_2_3_4, а аудио и видео остались синхронизированными в file_2_3_4.

Затем я объединил file_1 с file_2_3_4 в file_1_2_3_4. Однако аудио и видео в file_1_2_3_4 не были синхронизированы. Когда воспроизводится file_1_2_3_4, все нормально в части file_1. Однако, начиная с части file_2, аудио и видео не синхронизируются.

Затем я попробовал обратное. Я слил file_2_3_4 с file_1 в file_2_3_4_1. Когда файл_2_3_4_1 воспроизводится, часть file_2_3_4 в порядке. Тем не менее, аудио и видео не синхронизированы в части file_1.

Итак, я использовал Avidemux, чтобы изменить частоту кадров в файле file_1 до 30 кадров в секунду. Ширина кадра, высота кадра и частота дискретизации звука остались прежними. Я снова использовал Avidemux для объединения file_1 с file_2_3_4 в file_1_2_3_4. Еще раз, начиная с части file_2, аудио и видео не синхронизируются.

Итак, что мне нужно сделать, чтобы убедиться, что аудио и видео синхронизированы по всему file_1_2_3_4? Должен ли я преобразовать частоту дискретизации аудиофайла file_1 в 48 кГц? Какое программное обеспечение я использую для этого? Я слышал о программном инструменте под названием MP4 Joiner . Это поможет?

1

2 ответа на вопрос

1
jiggunjer

Apparently Avidemux uses the frame- and audio rates of the first file. So if file 1 has 42kHz and file234 has 48kHz, the audio of file234 will be played too slow if it is not resampled. You will notice a larger delta as the video progresses.

If the framerate of the second video was much different, e.g. 60fps you would also notice the video of the second part to move two times slower as it will still play as if it were 30fps (like the first file)

0
OmnipotentEntity

Вам нужно будет перекодировать файл_1 как 30 кадров в секунду. Вы можете сделать это с помощью x264 или mencoder или одной из очень многих бесплатных программ для кодирования. Вы не можете просто объединить файлы, если они не имеют одинаковую частоту кадров. Вам также нужно будет перекодировать аудио, чтобы получить ту же частоту дискретизации. Я предлагаю использовать sox для изменения формы волны, а затем повторно сжать с любым кодеком, который вы уже используете.

Перекодирую ли я частоту кадров и частоту дискретизации одновременно? Или сначала перекодировать частоту кадров, а затем перекодировать частоту дискретизации звука? И повторно кодирует ли SoX и частоту кадров, и частоту дискретизации звука? Как я упоминал выше, я уже смог изменить частоту кадров до 30 с помощью Avidemux. Итак, я просто перекодировать частоту дискретизации звука? Кроме того, я не уверен, какой кодек я использую. Как я узнаю? Спасибо за ваш ответ. Rob42 13 лет назад 0