FFmpeg 找不到 yuv420p 流的编解码器参数

FFmpeg cannot find codec parameters for yuv420p stream

我正在尝试使用 FFmpeg(带有 IJKPlayer)从相机流式传输 RTSP 流。我正在尝试在 iOS 上执行此操作,所以我自己编译了 FFmpeg。

但是,当我尝试播放流时,似乎产生了一个错误:

Could not find codec parameters for stream 0 (Video: h264, 1 reference frame, none(left)): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options

再往下显示的流信息如下:

  Metadata:
    title           : streamed by the Santachi RTSP server
  Duration: N/A, start: 0.000000, bitrate: 64 kb/s
    Stream #0:0, 0, 1/90000: Video: h264, 1 reference frame, none(left), 90k tbr, 90k tbn, 180k tbc
    Stream #0:1, 0, 1/8000: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s

供参考,当我尝试从我的 PC 连接到流时,它工作正常,我得到的流信息如下:

  Metadata:
    title           : streamed by the Santachi RTSP server
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0, 28, 1/90000: Video: h264 (Main), 1 reference frame, yuv420p(progressive, left), 1280x720, 0/1, 20 tbr, 90k tbn, 180k tbc
    Stream #0:1, 17, 1/8000: Audio: pcm_alaw, 8000 Hz, mono, s16, 64 kb/s

看到编解码器是yuv420p,我重新编译了FFmpeg,包括以下选项:

COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=yuv4"
COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=yuv4mpegpipe"

H264 解码器和解析器已启用。然而,结果是一样的。此外,来自不同来源的其他流似乎也能正常工作。只是这个特定的相机流不起作用。

由于 FFmpeg 似乎在正确编译时可以使用流,因此我在编译时似乎缺少一些选项,但我不知道哪些选项。有帮助吗?

我通过切换到 VLCKit(可用作 iOS 的 Pod)设法解决了我的问题。虽然它仍然在底层使用 ffmpeg,但它对流做了一些 "magic" 并且似乎工作正常。