通过ffmpeg libavcodec读取UDP流

时间:2014-01-09 18:07:58

标签: ffmpeg udp libavcodec

我想使用来自udp://:1500等UDP地址的ffmpeg libavcodec来读取视频流。我正在使用此代码:

char *url = "udp://:1500";
char *format = "mpegts";

AVInputFormat *fmt = NULL;
AVFormatContext *oc = NULL;

int res;

fmt = av_find_input_format(format);
res = avformat_open_input(&oc, url, fmt , NULL);
if(res!=0){
     printf("Could not open the stream\n");
     exit(1);
}

但是当我运行这段代码时,程序在执行res = avformat_open_input(& oc,url,fmt,NULL)后会永远停止;

你知道这是什么问题吗?

1 个答案:

答案 0 :(得分:0)

我的流是用这个创建的:

ffmpeg -f v4l2 -input_format h264 -video_size 640x480 -framerate 30 -i /dev/video0 -preset ultrafast -tune zerolatency -vcodec copy -f h264 udp://machine:1500

我更改后你的代码对我有用

char *format = "mpegts";

char *format = "h264";

我的猜测是您的流不是您认为的格式。

事实上,当我完全删除 fmt 变量并传递 NULL 时,libav 为我发现了这种格式。

另见:Code that starts the same but has a lot more comments.