将 MKV 容器中的杜比视界文件转换为 MP4 容器

将 MKV 容器中的杜比视界文件转换为 MP4 容器

我有一个 5GB 的 Dolby Vision 文件,编码在 MKV 容器中。如果我在 LG CX 电视上播放此文件,整个显示屏都会变色。显然,LG OLED 电视附带的默认 WebOS 媒体播放器无法正确解码带 MKV 容器的 DV。我正在尝试将带 MKV 容器的 DV 转换为 DV MP4。这是我第一次使用 FFMpeg 进行转换。我ffmpeg -i Tiny.mkv Tiny_converted.mp4在命令提示符中运行了该命令。它开始运行并抛出了很多“跳过 NAL ******”(附有屏幕截图)。我不确定这些是警告还是错误消息。无论如何,我让它运行了大约 4 个小时,然后我停止了它。我不确定它是否真的在转换它。

  1. 这是将 DV MKV 简单地转换为 DV MP4 而不丢失 DV 和杜比音频的正确命令吗?
  2. 这些是警告信息还是错误消息?
  3. 转换 5GB 的文件通常需要多长时间?

这些是“跳过 NAL 单元 62”错误消息吗?

日志

问候,阿尼什

答案1

此代码是我工作流程的一部分,用于将 mkv 转换为 mp4,以便可以在 LG 电视(已测试 G2 和 CX)上播放。所有这些都是在 Linux 上使用 ffmpeg、dovi_tool 和 M4Box 上的 deps 完成的。它确实对视频和音轨进行了转码,但至少它向您展示了您需要采取的方向。

# extract video and audio tracks
mkvextract "name_here.mkv" tracks 0:"name_here_raw.hevc" 1:"name_here_raw.audio"
# extract RPU
dovi_tool -m 2 extract-rpu "name_here_raw.hevc"
# transcode video and audiot tracks
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"
# inject RPU into transcoded video track
dovi_tool inject-rpu -i "name_here_transcoded.hevc" --rpu-in RPU.bin -o "name_here_injected.hevc"
# convert to mp4 with dovi profile 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"
# add audio track
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";

当不需要转码时,您可以尝试未经测试的代码:

# without '-strict experimental' you end up with HDR only
ffmpeg -i "name_here_video.mkv" -c:v copy -c:a copy -movflags +faststart -strict experimental "$name_here_final.mp4";

相关内容