使用 FFmpeg 将 4K 视频重新编码为 H.265/HEVC,以便在 QuickTime 中播放

使用 FFmpeg 将 4K 视频重新编码为 H.265/HEVC,以便在 QuickTime 中播放

我有一个时长为一小时的 4K 视频,大小为 10 GB。我想尝试使用 FFmpeg 重新编码为 HEVC 以节省空间,这是我以前从未尝试过的事情。

但是,我将容器格式从 .m4v 切换到 .mp4,我没有意识到 QuickTime Player 无法播放;它仅支持 .mov 容器内的 HEVC 流。VLC 可以播放 .mp4,因此转换似乎成功了。

因此我尝试将容器格式切换为 .mov,但 QuickTime 仍然无法打开它。

我是否遗漏了其他步骤?转换过程持续了一整夜,因此如果有办法简单地更改容器,我宁愿不再进行转换。

$ ffmpeg -i otomatsuri.m4v -c:v libx265 -preset medium -crf 28 -c:a aac -b:a 128k otomatsuri.mp4
ffmpeg 版本 3.4.1 版权所有 (c) 2000-2017 FFmpeg 开发人员
  使用 Apple LLVM 版本 9.1.0(clang-902.0.30)构建
  配置:--prefix=/usr/local/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  libavutil 55. 78.100 / 55. 78.100
  libavcodec 57.107.100 / 57.107.100
  libavformat 57. 83.100 / 57. 83.100
  libavdevice 57. 10.100 / 57. 10.100
  libavfilter 6.107.100 / 6.107.100
  libavresample 3.7.0 / 3.7.0
  libswscale 4. 8.100 / 4. 8.100
  libswresample 2. 9.100 / 2. 9.100
  libpostproc 54. 7.100 / 54. 7.100
输入 #0, mov,mp4,m4a,3gp,3g2,mj2, 来自‘otomatsuri.m4v’:
  元数据:
    主要品牌:M4V
    次要版本:1
    兼容品牌:M4V M4A mp42isom
    创作时间:2018-02-09T09:37:48.000000Z
    编码器:Lavf57.83.100
  时长:00:53:53.00,开始:0.000000,比特率:24377 kb/s
    流#0:0(und):音频:aac (LC) (mp4a / 0x6134706D),32000 Hz,单声道,fltp,95 kb/s(默认)
    元数据:
      创作时间:2018-02-09T09:37:48.000000Z
      handler_name :核心媒体音频
    流#0:1(und):视频:h264(高)(avc1 / 0x31637661),yuv420p,2880x2160 [SAR 4:3 DAR 16:9],24278 kb/s,24 fps,24 tbr,60k tbn,48 tbc(默认)
    元数据:
      创作时间:2018-02-09T09:37:48.000000Z
      handler_name:核心媒体视频
流映射:
  流 #0:1 -> #0:0 (h264 (本机) -> hevc (libx265))
  流 #0:0 -> #0:1 (aac (原生) -> aac (原生))
按 [q] 停止,按 [?] 获取帮助
x265 [信息]: HEVC 编码器版本 2.6
x265 [信息]: 构建信息 [Mac OS X][clang 9.0.0][64 位] 8 位+10 位+12 位
x265 [信息]: 使用 CPU 功能:MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x265 [信息]:主配置文件,Level-5(主层)
x265 [信息]: 使用 4 个线程创建的线程池
x265 [信息]: 切片 : 1
x265 [信息]: 框架线程/池功能: 2/wpp(34 行)
x265 [信息]: 编码 QT: 最大 CU 大小,最小 CU 大小:64/8
x265 [信息]: 残差 QT: 最大 TU 尺寸,最大深度:32 / 1 帧间 / 1 帧内
x265 [信息]: ME / 范围 / 亚像素 / 合并 : 十六进制 / 57 / 2 / 2
x265 [信息]: 关键帧最小值 / 最大值 / 场景切换 / 偏差:24 / 250 / 40 / 5.00
x265 [信息]: 前瞻 / bframes / badapt : 20 / 4 / 2
x265 [信息]: b-金字塔/权重p/权重b : 1 / 1 / 0
x265 [信息]: 参考 / ref-limit cu / 深度 : 3 / 开 / 开
x265 [信息]: AQ: 模式 / str / qg-size / cu-tree : 1 / 1.0 / 32 / 1
x265 [信息]: 速率控制 / qCompress : CRF-28.0 / 0.60
x265 [信息]: 工具: rd=3 psy-rd=2.00 rskip signhide tmvp strong-intra-smoothing
x265 [信息]: 工具: lslices=8 去块 sao
输出 #0,mp4,到‘otomatsuri.mp4’:
  元数据:
    主要品牌:M4V
    次要版本:1
    兼容品牌:M4V M4A mp42isom
    编码器:Lavf57.83.100
    流#0:0(und):视频:hevc (libx265) (hev1 / 0x31766568),yuv420p,2880x2160 [SAR 4:3 DAR 16:9],q=2-31,24 fps,12288 tbn,24 tbc(默认)
    元数据:
      创作时间:2018-02-09T09:37:48.000000Z
      handler_name:核心媒体视频
      编码器:Lavc57.107.100 libx265
    流#0:1(und):音频:aac (LC) (mp4a / 0x6134706D),32000 Hz,单声道,fltp,128 kb/s(默认)
    元数据:
      创作时间:2018-02-09T09:37:48.000000Z
      handler_name :核心媒体音频
      编码器:Lavc57.107.100 aac
帧=77592 fps=2.8 q=-0.0 Lsize= 1670478kB 时间=00:53:52.93 比特率=4232.9kbits/s 速度=0.117x    
视频:1624946kB 音频:43103kB 字幕:0kB 其他流:0kB 全局标头:2kB 多路复用开销:0.145604%
x265 [信息]: 帧 I: 738, 平均 QP:25.05 kb/s: 9283.77
x265 [信息]: 帧 P: 20942, 平均 QP:27.55 kb/s: 6165.77
x265 [信息]: 帧 B: 55912, 平均 QP:31.10 kb/s: 3280.92
x265 [信息]: 加权 P 帧: Y:21.5% UV:15.2%
x265 [信息]: 连续 B 帧:7.8% 10.9% 15.9% 46.2% 19.1%

编码 77592 帧耗时 27541.51 秒(2.82 fps),4116.63 kb/s,平均 QP:30.09
[aac @ 0x7fd6d7801e00] Qavg:58695.016
$ ffmpeg -i otomatsuri.mp4 -c 复制 -map 0 otomatsuri.mov
ffmpeg 版本 3.4.1 版权所有 (c) 2000-2017 FFmpeg 开发人员
  使用 Apple LLVM 版本 9.1.0(clang-902.0.30)构建
  配置:--prefix=/usr/local/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  libavutil 55. 78.100 / 55. 78.100
  libavcodec 57.107.100 / 57.107.100
  libavformat 57. 83.100 / 57. 83.100
  libavdevice 57. 10.100 / 57. 10.100
  libavfilter 6.107.100 / 6.107.100
  libavresample 3.7.0 / 3.7.0
  libswscale 4. 8.100 / 4. 8.100
  libswresample 2. 9.100 / 2. 9.100
  libpostproc 54. 7.100 / 54. 7.100
输入 #0, mov,mp4,m4a,3gp,3g2,mj2, 来自‘otomatsuri.mp4’:
  元数据:
    主要品牌: isom
    次要版本:512
    兼容品牌: isomiso2mp41
    编码器:Lavf57.83.100
  时长:00:53:53.00,开始:0.000000,比特率:4232 kb/s
    流#0:0(und):视频:hevc (主) (hev1 / 0x31766568)、yuv420p(tv,渐进式)、2880x2160 [SAR 4:3 DAR 16:9]、4117 kb/s、24 fps、24 tbr、12288 tbn、24 tbc (默认)
    元数据:
      handler_name : 视频处理程序
    流#0:1(und):音频:aac (LC) (mp4a / 0x6134706D),32000 Hz,单声道,fltp,109 kb/s(默认)
    元数据:
      handler_name : SoundHandler
输出 #0,mov,到‘otomatsuri.mov’:
  元数据:
    主要品牌: isom
    次要版本:512
    兼容品牌: isomiso2mp41
    编码器:Lavf57.83.100
    流#0:0(und):视频:hevc (主) (hev1 / 0x31766568),yuv420p(tv,渐进式),2880x2160 [SAR 4:3 DAR 16:9],q=2-31,4117 kb/s,24 fps,24 tbr,12288 tbn,12288 tbc (默认)
    元数据:
      handler_name : 视频处理程序
    流#0:1(und):音频:aac (LC) (mp4a / 0x6134706D),32000 Hz,单声道,fltp,109 kb/s(默认)
    元数据:
      handler_name : SoundHandler
流映射:
  流 #0:0 -> #0:0 (复制)
  流 #0:1 -> #0:1 (复制)
按 [q] 停止,按 [?] 获取帮助
帧=77592 fps=18819 q=-1.0 Lsize= 1670479kB 时间=00:53:52.90 比特率=4232.9kbits/s 速度= 784x    
视频:1624946kB 音频:43103kB 字幕:0kB 其他流:0kB 全局标头:2kB 多路复用开销:0.145614%

答案1

有些播放器依靠元数据来识别文件内容是否可以使用。QT 属于这一类。正如评论中所证实的,分配编解码器标签允许hvc1在 QT 中播放,

ffmpeg -i otomatsuri.mp4 -c copy -map 0 -vtag hvc1 otomatsuri.mov

相关内容