У меня есть видеофайл, закодированный как H.264 в файле mp4, и аудио, закодированный как Opus в файле webm. Как лучше всего объединить эти файлы в один mp4? Я не хочу перекодировать файлы и терять их качество.
Это может быть сделано относительно легко с FFmpeg. Если Вы используете Гостеприимный Xerus LTS, просто выполняет следующее:
sudo apt-get install ffmpeg
Однако при выполнении Испытанного Тара LTS, Вы были бы лучшими для создания собственного из них простая копия и инструкции по вставке...
Для демонстрации техники, я создал 2 тестовых файла:
Этот файл называют test.mp4
имеет h.264 поток, который Вы хотите, и находится в следующем формате, отнеситесь со вниманием к потоковым идентификаторам:
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661) ...
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D)...
Это регистрирует названный test1.webm
имеет поток Опуса, который Вы хотите, и находится в следующем формате, снова отнеситесь со вниманием к потоковым идентификаторам:
Stream #0:0: Video: vp9 (Profile 0)...
Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
Примечание: В Вашем примере webm контейнер может иметь только аудиопоток без видеопотока. В этом случае Ваш аудиопоток Опуса имел бы идентификатор Stream #0:0
.
Примите во внимание также, что в данный момент Вы не можете поместить Аудио Опуса в mp4 контейнер, но оно находится вполне счастливо в mkv контейнере. Следующее является самым простым методом:
ffmpeg -i test.mp4 -i test1.webm -c copy -map 0:0 -map 1:1 -shortest out.mkv
Это выполняет следующее:
-c copy
скопируйте кодеки без транскодирования-map 0:0
выберите 1-й входной файл: 1-й поток = желаемый h.264 поток-map 1:1
выберите 2-й входной файл: 2-й поток = желаемый поток Опуса-shortest
прекратите кодировать когда самые короткие входные концы потокаДля более тщательно продуманных методов, которые будут требоваться с мультипотоковыми файлами, см. ссылку в моих ссылках...
Ссылки:
Так как Опус не соответствует контейнерному стандарту MP4, и H.264 столь же неуместен в WebM (ограниченный MKV) контейнеры, необходимо использовать MKV и надеяться, что плееры поддерживают аудиотреки Опуса.
Перемультиплексирование может быть столь же простым как открытие Mkvmerge GUI, позорящий оба файла и выбирающий конкретные дорожки, которые Вы хотите иметь в выводе. Но никто не мешает Вам исследовать все опции, включенные для утилиты командной строки (новый GUI должен все еще иметь опцию скопировать всю команду), или обучение использовать ffmpeg.