2

我已经使用 ffmpeg 和 x264 库成功创建了 h264/mp​​4 电影文件。

现在我想将 h264 库从 x264 更改为 openH264。我可以用 openH264 替换 x264 库,重新编译 ffmpeg 并制作电影文件,而无需更改制作电影的源代码。生成的电影在 Mac 上的 Quicktime 中可以正常打开,但在 Windows 上,Windows Media Player 12 无法播放。

有关 Windows Media Player 对 h264 的支持的文档尚不清楚。 Windows Media Player 支持的文件类型在表格中表明 Windows Media Player 12 支持 mp4,但下面的文字说明:

Windows Media Player 不支持播放 .mp4 文件格式。

据我观察,Windows Media Player 12能够播放h264 /mp​​4 文件,但只能在使用 x264 创建时。

有谁知道我需要如何调整编解码器/上下文的配置,以便电影在 Windows Media Player 中播放?Windows Media Player 是否仅支持某些 h264 配置文件?

我注意到警告:

[libopenh264 @ 0x...] [OpenH264] this = 0x..., 警告:bEnableFrameSkip = 0, RC_QUALITY_MODE、RC_BITRATE_MODE 和 RC_TIMESTAMP_MODE 的比特率无法控制而不启用跳帧

使用配置:

av_dict_set(&options, "allow_skip_frames", "1", 0);

我可以摆脱这个警告,但电影仍然无法播放。是否需要设置其他选项才能在 Windows Media Player 中播放电影?

谢谢您的帮助

在 Windows Media Player 中可以正常播放的文件的 ffprobe 输出:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_x264.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : retina
    encoder         : Lavf57.56.100
    comment         : Creation Date: 2017-03-10 07:47:39.601
  Duration: 00:00:04.17, start: 0.000000, bitrate: 17497 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),
      yuv420p, 852x754, 17495 kb/s, 24 fps, 24 tbr, 24k tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler

在 Windows Media Player 中不播放的文件的 ffprobe 输出:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_openh264.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : retina
    encoder         : Lavf57.56.100
    comment         : Creation Date: 2017-03-10 07:49:27.024
  Duration: 00:00:04.17, start: 0.000000, bitrate: 17781 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661),
      yuv420p, 852x754, 17779 kb/s, 24 fps, 24 tbr, 24k tbn, 48k tbc (default)
    Metadata:
      handler_name    : VideoHandler
4

0 回答 0