我目前正在开发一个需要解码 UDP 多播 RTSP 流的应用程序。目前,我可以通过 ffplay 查看 RTP 流
ffplay -rtsp_transport udp_multicast rtsp://streamURLGoesHere
但是,我正在尝试使用 FFMPEG 打开 UDP 流(为简洁起见,删除了错误检查和清理代码)。
AVFormatContext* ctxt = NULL;
av_open_input_file(
&ctxt,
urlString,
NULL,
0,
NULL
);
av_find_stream_info(ctxt);
AVCodecContext* codecCtxt;
int videoStreamIdx = -1;
for (int i = 0; i < ctxt->nb_streams; i++)
{
if (ctxt->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
{
videoStreamIdx = i;
break;
}
}
AVCodecContext* codecCtxt = ctxt->streams[videoStreamIdx]->codec;
AVCodec* codec = avcodec_fine_decoder(codecCtxt->codec_id);
avcodec_open(codecCtxt, codec);
AVPacket packet;
while(av_read_frame(ctxt, &packet) >= 0)
{
if (packet.stream_index == videoStreamIdx)
{
/// Decoding performed here
...
}
}
...
这种方法适用于包含原始编码视频流的文件输入,但对于 UDP 多播 RTSP 流,它无法通过在av_open_input_file()
. 请指教...