【问题标题】:Quicktime not playing a h264 aac encoded file - why?Quicktime 不播放 h264 aac 编码文件 - 为什么?
【发布时间】:2020-05-01 14:35:27
【问题描述】:

当我尝试播放 mp4 文件时,Quicktime 提示“此文件与 quicktime 播放器不兼容”。

信息显示编码为: H.264、AAC、QuickTime 文本

该文件可以在 VLC 中正常播放。 我需要在我的 iTunes 库中使用这个文件,以便我可以流式传输它,因此这个问题很重要。

奇怪的是,我还有其他具有类似代码的文件,QT 可以正常播放。 如何检查此文件不兼容的原因?

这是来自 ffprobe 的日志:

ffprobe test4.mp4

ffprobe version 4.2.1 Copyright (c) 2007-2019 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test4.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : Joker
    encoder         : Lavf58.29.100
  Duration: 00:34:49.05, start: 0.000000, bitrate: 78 kb/s
    Chapter #0:0: start 0.000000, end 602.942000
    Metadata:
      title           : Chapter 10
    Chapter #0:1: start 602.942000, end 1130.427000
    Metadata:
      title           : Chapter 11
    Chapter #0:2: start 1130.427000, end 1725.063000
    Metadata:
      title           : Chapter 12
    Chapter #0:3: start 1725.063000, end 2089.052000
    Metadata:
      title           : Chapter 13
    Stream #0:0(und): Video: h264 (High 10) (avc1 / 0x31637661), yuv420p10le, 1920x1080 [SAR 180:173 DAR 320:173], 2295 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 6 channels, fltp, 394 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2(eng): Data: bin_data (text / 0x74786574)
    Metadata:
      handler_name    : SubtitleHandler
Unsupported codec with id 100359 for input stream 2

【问题讨论】:

  • 在文件上运行 mediainfo/ffprobe 并发布日志好吗?
  • 我用日志更新了原帖
  • 啊,好吧,让我把它转换成 8 位,看看是否可行。我想像这样的事情? ffmpeg -I input.mp4 -c:v libx264 -crf 18 -vf format=yuv420p -c:a copy output.mp4

标签: compatibility h.264 quicktime aac


【解决方案1】:

请尝试添加“-vf format=yuv420p”。

我有同样的问题,我有一个视频

Stream #0:0(und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p10le(tv, bt709/unknown/unknown), 1170x2532, 2534 kb/s, 42.16 fps, 600 tbr, 600 tbn, 600 tbc (default)

然后我做:

ffmpeg -i in.mp4 -r 25 -vf scale=300x500 o.mp4

我得到了 o.mp4

Stream #0:0(und): Video: h264 (High 10) (avc1 / 0x31637661), yuv420p10le(tv, bt709/unknown/unknown), 300x500, 53 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)

我不能用 QT 玩它。 然后我改成

ffmpeg -i in.mp4 -c:v libx264 -profile:v high10 -level:v 4.0 -vf scale=300:-1 -vf format=yuv420p  o.mp4

视频现在很好。我认为“-vf format=yuv420p”是关键,szatmary 可能是对的,“QT can't play 10bits with High 10”。

最后的视频是

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/unknown/unknown), 1170x2532, 415 kb/s, 42.16 fps, 42.16 tbr, 2380950.00 tbn, 84.32 tbc (default)

【讨论】:

    【解决方案2】:
    Stream #0:0(und): Video: h264 (High 10) (avc1 / 0x31637661), yuv420p10le, 1920x1080 [SAR 180:173 DAR 320:173], 2295 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
    

    Quicktime 无法播放 10 位 h.264,因此:

    此文件与 quicktime 播放器不兼容

    【讨论】:

    • 谢谢,我转成 8 位了,还是不行 :)
    • 您能否发布一个命令行选项,我们可以使用该选项将视频制作为 8 位而不是 10 位 h.264?
    • 你怎么知道 QuickTime Player 不支持 10 位 h.264? Stream 信息的哪一部分显示视频是 10 位的?
    • 我知道它不支持它,因为它不支持它,我知道这一点。而且我知道视频是10位的,因为像素格式是10位yuv420p10le
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2020-08-08
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多