【发布时间】:2017-08-24 02:06:21
【问题描述】:
我正在尝试使用 FFmpeg(与 IJKPlayer)从相机流式传输 RTSP 流。我正在尝试在 iOS 上执行此操作,所以我自己编译了 FFmpeg。
但是,当我尝试播放流时,它似乎会产生错误:
找不到流 0 的编解码器参数(视频:h264,1 参考 frame, none(left)): unspecified size 考虑增加 'analyzeduration' 和 'probesize' 选项
再往下,显示的流信息如下:
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
作为参考,当我尝试从我的电脑连接到流时,它可以工作,我得到的流信息如下:
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 似乎在正确编译后可以使用流,所以我在编译时似乎缺少一些选项,但我不知道哪些选项。有什么帮助吗?
【问题讨论】:
-
你尝试了哪些probesize和analyzeduration值?
-
@Mulvya 9999000000000 对于两者。这并没有什么不同。我现在也在测试,其他具有 yuv420p 格式的流似乎工作正常(比如这个 rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov)。所以我开始怀疑这是否是问题所在。
-
你把两个选项都放在之前输入?
-
@Mulvya 我正在使用 IJKPlayer,它使用 FFmpeg。我不知道 IJK 如何将参数传递给 FFmpeg。我正在做的是这样的事情 -
[options setFormatOptionIntValue:9999000000000 forKey:@"analyzeduration"];。然后将options对象传递给 IJK。你认为这些选项真的有帮助吗?如果是这样,我可以尝试深入研究来源,以更详细地了解发生了什么。
标签: ios video ffmpeg video-streaming