【问题标题】:Error when trying to play h264 stream with ffplay尝试使用 ffplay 播放 h264 流时出错
【发布时间】:2015-08-29 15:10:56
【问题描述】:

我有一个包含部分原始 h264 流的文件,我想在 Android 应用程序中播放它..

首先我尝试在电脑上播放它...所以我尝试使用 ffplay 来播放它.. 我使用了这个命令:
ffplay.exe stream.out
然后它打开一个窗口并开始播放它,但我看到的只是屏幕上的很多绿色......

输出有很多红线错误:

[h264 @ 00000000031238c0] Reducing left cropping to 0 chroma samples to preserve alignment.
[h264 @ 00000000031238c0] illegal aspect ratio
[h264 @ 0000000003110ec0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, h264, from 'out4':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1200k tbn, 59.94 tbc
[h264 @ 0000000005791960] error while decoding MB 50 37, bytestream -11
[h264 @ 0000000005791960] top block unavailable for requested intra4x4 mode -1 at 4 42
[h264 @ 0000000005791960] error while decoding MB 4 42, bytestream 4057
[h264 @ 0000000005791960] concealing 3519 DC, 3519 AC, 3519 MV errors in P frame
[h264 @ 0000000005782840] error while decoding MB 0 3, bytestream -23
[h264 @ 0000000005782fc0] error while decoding MB 1 36, bytestream -16
[h264 @ 0000000005782fc0] concealing 3462 DC, 3462 AC, 3462 MV errors in P frame
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 0 12
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 0 12
[h264 @ 0000000005490380] error while decoding MB 0 12, bytestream 917
[h264 @ 0000000005782840] error while decoding MB 0 12, bytestream 4415
[h264 @ 0000000005782840] top block unavailable for requested intra mode at 22 18
[h264 @ 0000000005782840] error while decoding MB 22 18, bytestream 1477
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 8 30
[h264 @ 0000000005782840] error while decoding MB 8 30, bytestream 4272
[h264 @ 0000000005782840] error while decoding MB 67 37, bytestream -10
[h264 @ 0000000005782840] top block unavailable for requested intra mode at 51 42
[h264 @ 0000000005782840] error while decoding MB 51 42, bytestream 3845
[h264 @ 0000000005782840] concealing 3309 DC, 3309 AC, 3309 MV errors in P frame
[h264 @ 0000000005490380] concealing 3296 DC, 3296 AC, 3296 MV errors in P frame
[h264 @ 00000000057914c0] top block unavailable for requested intra4x4 mode -1 at 0 12
[h264 @ 00000000057914c0] error while decoding MB 0 12, bytestream 4371
[h264 @ 00000000057914c0] top block unavailable for requested intra4x4 mode -1 at 5 18
[h264 @ 00000000057914c0] error while decoding MB 5 18, bytestream 5007
[h264 @ 00000000057914c0] error while decoding MB 46 26, bytestream -6
[h264 @ 00000000057914c0] top block unavailable for requested intra mode at 37 36
[h264 @ 00000000057914c0] error while decoding MB 37 36, bytestream 1271
[h264 @ 00000000057914c0] concealing 2953 DC, 2953 AC, 2953 MV errors in P frame
[h264 @ 0000000005791960] concealing 3391 DC, 3391 AC, 3391 MV errors in P frame
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 5 0
[h264 @ 0000000005782840] error while decoding MB 5 0, bytestream 1025
[h264 @ 0000000005782fc0] top block unavailable for requested intra4x4 mode -1 at 47 30
[h264 @ 0000000005782fc0] error while decoding MB 47 30, bytestream 584
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 8 6
[h264 @ 0000000005782840] error while decoding MB 8 6, bytestream 4699
[h264 @ 0000000005782fc0] concealing 3600 DC, 3600 AC, 3600 MV errors in P frame
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 0 12
[h264 @ 0000000005782840] error while decoding MB 0 12, bytestream 4586
[h264 @ 0000000005782840] error while decoding MB 58 19, bytestream -6
[h264 @ 0000000005782840] top block unavailable for requested intra mode at 44 30
[h264 @ 0000000005782840] error while decoding MB 44 30, bytestream 3906
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 37 0
[h264 @ 0000000005490380] error while decoding MB 37 0, bytestream 805
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 18 6
[h264 @ 0000000005490380] error while decoding MB 18 6, bytestream 4681
[h264 @ 0000000005782840] concealing 3271 DC, 3271 AC, 3271 MV errors in P frame
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 53 18
[h264 @ 0000000005490380] error while decoding MB 53 18, bytestream 4391
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 2 24
[h264 @ 0000000005490380] error while decoding MB 2 24, bytestream 1268
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 0 30
[h264 @ 0000000005490380] error while decoding MB 0 30, bytestream 4550
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 0 36
[h264 @ 0000000005490380] error while decoding MB 0 36, bytestream 4722
[h264 @ 0000000005490380] top block unavailable for requested intra4x4 mode -1 at 0 42
[h264 @ 0000000005490380] error while decoding MB 0 42, bytestream 792
[h264 @ 0000000005490380] concealing 3596 DC, 3596 AC, 3596 MV errors in P frame
[h264 @ 00000000057914c0] concealing 3598 DC, 3598 AC, 3598 MV errors in P frame
[h264 @ 0000000005791960] top block unavailable for requested intra mode at 25 0
[h264 @ 0000000005791960] error while decoding MB 25 0, bytestream 964
[h264 @ 0000000005791960] top block unavailable for requested intra4x4 mode -1 at 0 12
[h264 @ 0000000005791960] error while decoding MB 0 12, bytestream 4593
[h264 @ 0000000005791960] top block unavailable for requested intra4x4 mode -1 at 29 24
[h264 @ 0000000005791960] error while decoding MB 29 24, bytestream 954
[h264 @ 0000000005791960] top block unavailable for requested intra mode at 3 30
[h264 @ 0000000005791960] error while decoding MB 3 30, bytestream 799
[h264 @ 0000000005791960] concealing 3118 DC, 3118 AC, 3118 MV errors in P frame
[h264 @ 0000000005782fc0] top block unavailable for requested intra4x4 mode -1 at 0 30
[h264 @ 0000000005782fc0] error while decoding MB 0 30, bytestream 778
[h264 @ 0000000005782840] error while decoding MB 31 4, bytestream -8
[h264 @ 0000000005782fc0] concealing 3600 DC, 3600 AC, 3600 MV errors in P frame
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 4 6
[h264 @ 0000000005782840] error while decoding MB 4 6, bytestream 4729
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 0 12
[h264 @ 0000000005782840] error while decoding MB 0 12, bytestream 4431
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 38 18
[h264 @ 0000000005782840] error while decoding MB 38 18, bytestream 4798
[h264 @ 0000000005782840] top block unavailable for requested intra mode at 31 24
[h264 @ 0000000005782840] error while decoding MB 31 24, bytestream 752
[h264 @ 0000000005782840] top block unavailable for requested intra mode at 5 30
[h264 @ 0000000005782840] error while decoding MB 5 30, bytestream 3844
[h264 @ 0000000005782840] top block unavailable for requested intra4x4 mode -1 at 38 42
[h264 @ 0000000005782840] error while decoding MB 38 42, bytestream 3739
[h264 @ 0000000005782840] concealing 3291 DC, 3291 AC, 3291 MV errors in P frame
[h264 @ 0000000005490380] Delayed frames seen. Reenabling low delay requires a codec flush.
[h264 @ 0000000005490380] Reinit context to 1280x720, pix_fmt: yuvj420p
[h264 @ 00000000057914c0] error while decoding MB 10 17, bytestream -6
[h264 @ 0000000005490380] left block unavailable for requested intra4x4 mode -1 at 0 16
[h264 @ 0000000005490380] error while decoding MB 0 16, bytestream 3934
[h264 @ 00000000057914c0] concealing 3239 DC, 3239 AC, 3239 MV errors in P frame
[h264 @ 0000000005490380] left block unavailable for requested intra mode at 0 18
[h264 @ 0000000005490380] error while decoding MB 0 18, bytestream 3068
[h264 @ 0000000005490380] left block unavailable for requested intra4x4 mode -1 at 0 33
[h264 @ 0000000005490380] error while decoding MB 0 33, bytestream 745
[h264 @ 0000000005490380] left block unavailable for requested intra4x4 mode -1 at 0 38
[h264 @ 0000000005490380] error while decoding MB 0 38, bytestream 4460
[h264 @ 0000000005490380] concealing 2769 DC, 2769 AC, 2769 MV errors in I frame
[h264 @ 0000000005782840] error while decoding MB 79 24, bytestream -7
[h264 @ 0000000005782840] concealing 3570 DC, 3570 AC, 3570 MV errors in P frame

我的来源有问题? 我能做什么?

谢谢你:)

【问题讨论】:

  • 你能定义“原始 h264 流的一部分”是什么意思吗?文件是你自己剪的吗?
  • 不,我不是自己剪的。我只是不太确定流是从一开始就录制的。有办法检查吗?

标签: java video ffmpeg h.264


【解决方案1】:

这可能是因为您正在尝试播放部分 原始 .264 流。

要播放原始 .264 文件,该文件应以 SPS、PPS 和 IDR 帧(不依赖于之前的帧)开头。如果您在流的某个随机部分开始播放,那么这将不起作用,并且您看到的伪影可能是基于丢失参考帧的预测错误。

【讨论】:

  • 您确定是这种情况吗?因为我使用了一些无人机的 sdk,它给了我流,而 sdk 中应该播放视频的小部件成功地做到了:/
  • 不,我不确定,只有您可以验证是否是这种情况。如果你有原始的 .264 文件,你可以例如在十六进制编辑器中打开它,然后检查文件以什么类型的 NAL 单元开头。如果您在中途收到 H.264 文件,通常仅在第一个 SPS/PPS/IDR NAL 单元开始解码视频。在此之前,您的 SDK 小部件可能会跳过其他帧。这一切都取决于文件的内容。如果你在网上发布你的“部分”文件,我会看一看。
  • 这是原始缓冲区 - drive.google.com/file/d/0B7sT67ga5GuwY3BfUzQ5SXgxdUU/… 这是用于从相机的 sdk 解密的 iframe.. drive.google.com/file/d/0B7sT67ga5GuwTFdlbldVVHB6Rm8/… 谢谢 :)
  • 您的原始缓冲区从 NAL 单元的中间开始,然后是各种类型的 NAL 单元“非 IDR 图片的编码切片”、访问单元分隔符等。如果这是您尝试播放的文件,然后它失败了,因为您只能从流中的下一个 IDR 开始“干净”解码。这将解释您所看到的工件。我无法下载其他文件。
  • 如何找到下一个 IDR?
猜你喜欢
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 2013-02-04
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多