使用ffmpeg和sdl进行264视频解码和播放,使用文本编辑框接收URL地址和端口(客户端的IP地址和端口)。定义一个全局变量CString url保存客户端的IP地址和端口m_port,端口是int类型
GetDlgItemText(IDC_EDIT1,url);//获取文本编辑框中的CString类型的IP地址
GetDlgItemText(IDC_EDIT2,port);//获取文本编辑框中的端口
int m_port=_ttoi(port);//转化为int类型
url.Format(_T("%s:%d"),url,m_port);
高版本的ffmpeg中的avformat_open_input函数可以用来打开实时视频数据流(同打开视频文件方法相同)
avformat_open_input(&pFormatCtx,url, NULL, NULL)
然后按照ffmpeg中解码视频的流程开始就OK了。ffmpeg解码的流程:
1. 注册所有容器格式和CODEC:av_register_all()
2. 打开url/文件:av_open_input_file()
3. 获取流信息:av_find_stream_info()
4. 从中查找视频流:AVMEDIA_TYPE_VIDEO
5. 查找对应的解码器:avcodec_find_decoder()
6. 打开解码器:avcodec_open2()
7. 为解码帧分配内存:avcodec_alloc_frame()
8. 从码流中提取出帧数据:av_read_frame()
9. 判断帧的类型,对于视频帧调用:avcodec_decode_video2()
10. 解码完后,释放解码器:avcodec_close()
11. 关闭输