使用ffmpeg播放实时视频流的问题
我需要从网络上不断接收数据包,收到一定数量的数据包后,用代码将数据恢复成H264帧,因此我需要一帧一帧的解码并播放.现在的处理过程是这样的:
avcodec_init();
av_register_all();
avcodec_alloc_context();
avcodec_find_decoder(..);
avcodec_alloc_frame()
现在出现的问题在于执行了以下步骤后,AVFrame对象中data的值和linesize的值都是空的,但是执行返回值和我输入帧的长度一至,got_picture_ptr的值也非0,多次观察均为200:
avcodec_decode_video(..);
为什么会出现这种现像,如何解决,请各们高人指点
[解决办法]
例子发给你了,查收
[解决办法]
我只能说我用directshow的经验,RGB和yuv都可以直接送给Video Renderer,Video Renderer一般可以直接播放的,不过不同的显卡支持的格式还不全相同。
[解决办法]
200为正确啊,码流也正确
你看看demo的返回值判断情况
[解决办法]
码流是正确的
不过感觉你调用ffmpeg的过程缺少些什么,可能是你没贴全吧,avcodec_open()没调用吧,其实用ffmpeg解网络流和解本地文件是一样的,apiexample.c就是一个很好的例子。
[解决办法]
600k,是D1的yuv420么。。
ffmpeg里面 sws_getContext 可以用来转化图像格式。
用SDL 能直接播放yuv,也可以双缓冲GDI播放,Dshow也不错。