ffmpeg+RTP+H.264 总结
来源:互联网 发布:淘宝买家无理由退货 编辑:程序博客网 时间:2024/05/17 06:51
最近研究视频编解码,阶段性工作完成,在此总结。
参考资料:
(1) avplayer:一个编码风格与ffmpeg很相近的开源播放器库。 //读文件/BT/YK播放,不适用RTP流
(2)《MPEG-4/H.264视频编解码工程实践》 //用来扫盲,书中代码所用ffmpeg库太老了,造成马赛克。
(3) Ffmpeg-based_video_decompression :一个用来视频格式转换的开源小软件 //可参考,ffmpeg库也很老。
(4) RFC3984 //RTP 关于 h.264的承载格式,组包时用到
使用的ffmpeg版本:0.6.2
用到的ffmpeg函数:
avcodec_init();
avcodec_register_all();
avcodec_find_decoder(CODEC_ID_H264);
avcodec_alloc_context();
avcodec_open(play->m_video_ctx, play->m_decoder);
avcodec_alloc_frame();
avcodec_decode_video(play->m_video_ctx,
avframe,
&got_picture,
(uint8_t *)pDec,
buf_offset);
avpicture_get_size(PIX_FMT_YUV420P, play->m_video_ctx->width, play->m_video_ctx->height);
avpicture_fill((AVPicture*) &(*dst), buffer, PIX_FMT_YUV420P, play->m_video_ctx->width, play->m_video_ctx->height);
sws_getContext(play->m_video_ctx->width,
play->m_video_ctx->height, play->m_video_ctx->pix_fmt,
play->m_video_ctx->width, play->m_video_ctx->height,
PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL);
sws_scale(play->m_swsctx, src->data, src->linesize, 0,
play->m_video_ctx->height, dst->data, dst->linesize);
sws_freeContext(play->m_swsctx);
显示问题:
当解码第一帧完毕时,可以得到play->m_video_ctx->width和play->m_video_ctx->height。
在窗口显示主循环中,检测视频窗口是否初始化,如果未初始化,则得到width和height,并且重新根据视频实际大小,重新画屏。
参考:http://blog.csdn.net/smilestone322/article/details/7595755
2013年10月8日,补充:
如果使用较新版本的ffmpeg,解码函数有所变化:
avcodec_decode_video2(player->pCodecCtx, videoFrame, &gotPicture, &packet);
其中packet是一个AVPacket结构,在解码之前,需要把待解码的数据缓冲指给packet,形如:
packet.data = buffer;
packet.size = buffLen;
- ffmpeg+RTP+H.264 总结
- ffmpeg解码RTP+H.264
- ffmpeg对H.264进行rtp打包
- h.264 rtp打包
- H.264中的RTP
- h.264 rtp打包
- h.264 rtp打包
- H.264 RTP解码
- h.264 rtp打包
- H.264+RTP
- H.264 RTP Streaming
- RTP 打包H.264
- RTP封装H.264
- H.264 RTP Streaming
- RTP 打包H.264
- H.264 RTP payload 格式
- H.264 RTP payload 格式
- H.264 RTP payload 格式
- 怎样让 dma_alloc_coherent() 可以申请更大的内存
- Android ViewPager使用详解
- spice Application.cpp ---function_to_func_name 2013-5-28
- 如何下载和离线安装Chrome的CRX扩展文件包
- 面试最讨厌被问到的问题
- ffmpeg+RTP+H.264 总结
- SSO专题5--Ticket总结
- ubuntu下用eclipse搭建python环境
- COM 对象聚合
- Android讲解(一)+第一个Android应用——HelloWorld
- 延时函数
- 关于指针和数组的笔记
- Simulate War随记
- 乱序数组和随机数