Вопрос или проблема
У меня есть файл Dolby Vision размером 5 ГБ, закодированный в контейнере MKV. Если я воспроизводлю этот файл на своем телевизоре LG CX, на дисплее наблюдается изменение окраски. Очевидно, что медиаплеер WebOS по умолчанию, который идет с OLED-телевизором LG, не может правильно декодировать DV в контейнере MKV. Я пытаюсь конвертировать DV из контейнера MKV в DV MP4. Это первый раз, когда я использую FFMpeg для конвертации. Я запустил команду ffmpeg -i Tiny.mkv Tiny_converted.mp4
в командной строке. Она начала выполняться и выдала много сообщений “Пропуск NAL ******” (скриншот прикреплен). Я не уверен, являются ли это предупреждениями или сообщениями об ошибках. В любом случае, я оставил ее работать около 4 часов, а затем остановил. Я не был уверен, происходит ли на самом деле конвертация.
- Является ли это правильной командой для простой конвертации DV MKV в DV MP4 без потери DV и Dolby аудио?
- Являются ли эти сообщения предупреждениями или ошибками?
- Сколько времени обычно требуется для конвертации файла объемом 5 ГБ?
Являются ли эти сообщения об ошибках “Пропуск NAL единицы 62”?
С уважением,
Anish
Этот код является частью моего рабочего процесса по конвертации mkv в mp4, чтобы он мог воспроизводиться на телевизоре LG (тестировались G2 и CX). Все это выполняется на Linux с зависимостями от ffmpeg, dovi_tool и M4Box. Он действительно транскодирует видео и аудиодорожки, но по крайней мере показывает направление, в котором вам нужно двигаться.
# извлекаем видеодорожки и аудиодорожки
mkvextract "name_here.mkv" tracks 0:"name_here_raw.hevc" 1:"name_here_raw.audio"
# извлекаем RPU
dovi_tool -m 2 extract-rpu "name_here_raw.hevc"
# транскодируем видеодорожки и аудиодорожки
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i "name_here_raw.hevc" -i "name_here_raw.audio" -loglevel error -stats -vf "hwupload" -c:v hevc_vaapi -c:a aac -profile:v main10 -level:v 5.1 -tier:v high -bsf:v "hevc_mp4toannexb" -b:v 20M -maxrate 22M "name_here_transcoded.hevc" "name_here.aac"
# внедряем RPU в транскодированную видеодорожку
dovi_tool inject-rpu -i "name_here_transcoded.hevc" --rpu-in RPU.bin -o "name_here_injected.hevc"
# конвертируем в mp4 с профилем dovi 8.1
MP4Box -add "name_here_injected.hevc":dvp=8.1:xps_inband:hdr=none -brand mp42isom -no-iod -enable 1 "name_here_video.mp4" -tmp "/some_temp_dir"
# добавляем аудиодорожку
ffmpeg -i "name_here_video.mp4" -i "name_here.aac" -loglevel error -stats -map 0:v:0 -map 1:a:0 -sn -c:v copy -c:a copy -movflags +faststart -strict experimental "$name_here_final.mp4";
Непроверенный код, который вы можете попробовать, когда нет необходимости в транскодировании:
# без '-strict experimental' вы получите только HDR
ffmpeg -i "name_here_video.mkv" -c:v copy -c:a copy -movflags +faststart -strict experimental "$name_here_final.mp4";
Ответ или решение
Преобразование файла Dolby Vision из контейнера MKV в MP4
Ваша задача преобразовать файл Dolby Vision, имеющий контейнер MKV, в MP4, и возникает необходимость более подробно разобраться в этом процессе, учитывая советы, приведенные вами. Давайте подробно ответим на ваши вопросы, чтобы предоставить полное понимание и возможные решения.
1. Правильность команды для преобразования Dolby Vision MKV в Dolby Vision MP4
Вы использовали следующую команду:
ffmpeg -i Tiny.mkv Tiny_converted.mp4
Эта команда будет работать, но с ней могут возникнуть проблемы, если вы хотите сохранить информацию о Dolby Vision и звуковые дорожки. Дело в том, что просто копирование (то есть, использование -c copy
) может не сработать в случае, если вы используете специфические кодеки или метаданные.
Для правильного преобразования вам потребуется учитывать следующие моменты:
- Метаданные: Dolby Vision включает в себя метаданные, которые могут не сохраняться при простой конвертации.
- Кодек: Убедитесь, что вы используете кодек, совместимый с MP4. Dolby Vision требует специальной обработки.
В качестве более подходящей команды можно рассмотреть использование -c:v copy
для копирования видео и -c:a copy
для копирования аудио (если это допустимо):
ffmpeg -i Tiny.mkv -c:v copy -c:a copy -movflags +faststart Tiny_converted.mp4
Этот подход минимизирует возможные потери качества при конвертации, однако может не корректно обработать метаданные Dolby Vision.
2. Предупреждающие или ошибочные сообщения
Сообщения вида "Skipping NAL ***" являются предупреждениями, а не ошибками. Они указывают на то, что FFmpeg
пропускает определенные единицы (NAL units) во время обработки, что часто связано с не совсем корректным потоком данных в исходном файле. Это может быть нормальной ситуацией, особенно когда файл содержит не все необходимые данные для корректной работы.
3. Время конвертации 5GB файла
Время конвертации зависит от множества факторов, включая:
- Мощность вашего компьютера или сервера (ЦП, ОЗУ).
- Загруженность системы во время конвертации.
- Выбранные параметры кодирования (если есть, особенно если включает в себя транскодирование).
В общем случае конвертация большого файла (5 ГБ) может занять от нескольких минут до нескольких часов. Однако если ваш текущий процесс длился 4 часа и всё еще не завершился, возможно, вы использовали параметры, которые замедляют работу.
Дополнительные рекомендации
Если вы хотите использовать более сложный подход, как показано в коде из вашего исходного текста, убедитесь, что у вас установлены все необходимые инструменты, такие как mkvextract
, dovi_tool
и MP4Box
. Этот процесс включает в себя:
- Извлечение видео и аудиотреков из MKV.
- Обработка видео для внедрения метаданных Dolby Vision.
- Создание финального MP4 с учетом всех специфических требований.
Это может значительно помочь в корректной обработке видео и аудиотреков без потерь качества.
Заключение
Ваша задача по преобразованию Dolby Vision из MKV в MP4 часто требует более детального подхода, чем простое копирование. Использование правильных команд и дополнений поможет вам обеспечить корректное воспроизведение на вашем LG TV без цветовых искажений. Рекомендуется дополнительно протестировать полученные файлы и следовать инструкциям по обработке, чтобы избежать возможных проблем в будущем.