Вопрос или проблема
У меня есть файл MKV с видео в формате HEVC и аудио в формате OPUS. Он прекрасно воспроизводится во всех плеерах. Проблема в том, что мне нужно, чтобы его можно было стримить. Когда VLC воспроизводит MKV из интернета, он сначала скачивает его, а затем воспроизводит.
Есть ли способ поместить h.265 и opus в контейнер mp4 с атомом moov в начале mp4 файла, чтобы можно было начать воспроизведение без необходимости загружать весь файл?
Я пробовал сделать это с помощью нескольких программ, но безуспешно. При использовании cloudconvert.com я получаю ошибку “Не удалось записать заголовок для выходного файла #0 (неправильные параметры кодека ?): Неверный аргумент”.
Я только что наткнулся на коммит о черновике flac-в-mp4, который упоминает opus-в-mp4, что означает, что это еще не возможно, но возможно в будущем.
Да, это работает.
# ffmpeg 4.4
ffmpeg -i test.mp4 -c:a opus -strict -2 -c:v copy opus.mp4
Ответ или решение
Да, вы можете использовать кодеки H.265 (HEVC) для видео и Opus для аудио в контейнере MP4, однако важно учесть, что кодек Opus в MP4 не всегда поддерживается во всех проигрывателях и может вызвать проблемы с совместимостью. Важно также убедиться, что структура файла позволяет обеспечить потоковое воспроизведение.
Для того чтобы сделать MP4 файл с H.265 и Opus, вам потребуется использовать инструмент, такой как FFmpeg, который позволяет манипулировать медиафайлами и транскодировать их в различные форматы. Вам нужно сначала установить FFmpeg, если он еще не установлен на вашем компьютере.
Вот шаги, которые вам нужно выполнить:
-
Установите FFmpeg. Если у вас его нет, вы можете скачать и установить его с официального сайта FFmpeg.
-
Используйте команду FFmpeg для конвертации вашего файла. Предположим, что ваш файл называется
test.mkv
. Для конвертации используйте следующую команду:ffmpeg -i test.mkv -c:v copy -c:a libopus -movflags +faststart output.mp4
-i test.mkv
: указывает входной файл.-c:v copy
: копирует видеопоток без изменений (что подразумевает использование H.265).-c:a libopus
: кодирует аудиопоток с использованием кодека Opus.-movflags +faststart
: корректирует расположение атома moov в начале файла, что позволяет начать потоковое воспроизведение сразу же, не дожидаясь загрузки всего файла.
-
Проверьте выходной файл. После завершения команды, проверьте выходной файл
output.mp4
в различных проигрывателях, таких как VLC, чтобы убедиться, что он воспроизводится корректно.
Если вы столкнетесь с проблемами при воспроизведении или совместимости, возможно, стоит рассмотреть возможность использования других кодеков для аудио (например, AAC), так как они лучше поддерживаются в контейнере MP4:
ffmpeg -i test.mkv -c:v copy -c:a aac -movflags +faststart output.mp4
Таким образом, вы сможете создать MP4 файл с H.265 и Opus (или AAC) с правильной структурой для потокового воспроизведения.