V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
haroldwren
V2EX  ›  macOS

用 ffmpeg 转换 mkv, QuickTime 播放 HDR 视频

  •  1
     
  •   haroldwren · 2022-08-23 11:52:33 +08:00 · 1176 次点击
    这是一个创建于 615 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Mac 上用 QuickTime 播放 HDR 视频,不用担心色彩不准等问题。
    aria2 下载视频之后,可以自动运行一个 ffmpeg 的 script ,把 mkv 转换成 mp4 ,这样 QuickTime 就可以播放了。

    #!/bin/sh
    
    for f in /Users/username/Downloads/Media/*.mkv
    do
      # 用 ffprobe 读取源文件的视频,音频,字幕编码
      v_codec=$(/opt/homebrew/bin/ffprobe -v quiet -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$f")
      a_codec=$(/opt/homebrew/bin/ffprobe -v quiet -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$f")
      s_codec=$(/opt/homebrew/bin/ffprobe -v quiet -select_streams s:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$f")
      
      # QuickTime 播放 HEVC 视频必须得有个 tag: hvc1
      [ $v_codec = "hevc" ] && v="-c:v copy -tag:v hvc1" || v="-c:v copy"
      
      # QuickTime 不支持 DTS 音频,转换成 alac 格式
      [ $a_codec = "dts" ] && a="-c:a alac" || a="-c:a copy"
      
      # hdmv_pgs_subtitle 其实是图片,而 mp4 不支持 PGS 字幕,只能去除
      # 可以用 OCR 转换成 SRT ,但是 ffmpeg 不支持 OCR
      [ $s_codec = "hdmv_pgs_subtitle" ] && s="-sn" || s="-c:s mov_text"
      
      eval "/opt/homebrew/bin/ffmpeg -v error -i ${f} -map 0 ${v} ${a} ${s} ${f%.mkv}.mp4"
      # 删除原 mkv 文件
      rm -f "$f"
    done
    

    只是改变了视频的容器,视频编码等没有任何改变,所以速度非常快,通常只需要几秒钟。
    一般就这三个格式问题,转换后都可以播放了。

    2 条回复    2022-08-25 09:08:49 +08:00
    aero99
        1
    aero99  
       2022-08-24 11:26:38 +08:00
    只是改变了视频的容器,视频编码等没有任何改变,这一点超赞
    我想改成 win 上的批处理 bat ,目录里面的 ts 转换成 mp4 ,定时运行,不知能否实现
    haroldwren
        2
    haroldwren  
    OP
       2022-08-25 09:08:49 +08:00
    应该是可以的。不过有可能 ts 里的视频不是 H.264 编码,需要用 ffprobe 查看一下。不用转换的话,ffmpeg 的 -c copy 就只是换容器。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5579 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 03:34 · PVG 11:34 · LAX 20:34 · JFK 23:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.