我想使用来自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)后会永远停止;
你知道这是什么问题吗?
答案 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 为我发现了这种格式。