打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用ffmpeg 解码ps网络流视频
原创 2014年11月02日 15:26:35
首次用ffmpeg解网络流,写写自己的个人经历。
1.首先下载ffmpeg最新的版,http://ffmpeg.org。
如果是windows下,可以直接下载相应的库,http://ffmpeg.zeranoe.com/builds/
2.static文件下bin里面的exe是命令行的可执行程序。
share文件下bin里面存的时候动态库。
dev文件下include里面是需要包含的头文件。
3.先执行av_register_all()
初始化和注册所有的解码器、编码器和各种协议。
4.网络流数据写入ffmpeg
先写一个回调函数 int fill_iobuffer(void* opaque, uint8_t *buf, int bufSize);
int fill_iobuffer(void* opaque, uint8_t* buf, int bufSize)
{
//opaque 可以传入回调函数的变量,如果你需要传入变量,可以用此变量接收。
//buf  传入到ffmpeg的数据指针
//bufSize  数据的大小
return bufSize;
}
分配一块指定大小的可用的连续内存,返回非空分配成功。
unsigned char* iobuffer = (unsigned char*) av_malloc(1024*600);
分配并初始化一个结构体AVIOContext
AVIOContext* avio_alloc_context(unsigned char* buffer,  //AVIOContext结构体指针
int buffer_size,  //上面av_malloc内存大小
int write_flag, //写标志。if write,set 1;else ,set 0.
void* opaque;  //上面提到的传入回调函数的参数
int(*)(void *opaque, uint8_t *buf, int buf_size) read_packet, //读数据回调函数
int(*)(void* opaque, uint8_t *buf, int buf_size) write_packet, //写数据回调函数
int64_t(*)(void *opaque, int64_t offset, int whence) seek) // 一个查找指定字节位置的回调函数
AVIOContext * avio = avio_alloc_context(iobuffer, 1024*600, 0, 0, fill_iobuffer, NULL, NULL);
5.探测输入流信息
AVInputFormat * piFmt = NULL;
探测avio中输入的字节流的格式类型,存放在结构体piFmt。
av_probe_input_buffer(avio,  &piFmt, "", NULL, 0, 0);
打开一个输入流,并读取头信息。
avformat_open_input(&fmt_ctx, "", piFmt, NULL);
获取媒体流信息
avformat_find_stream_info(fmt_ctx, NULL);
6.下面就是正常解码程序了,和文件操作一样(时间原因就不写了)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ffmpeg结构体以及函数介绍(一)
TS OVER IP的多画面合成
ffmpeg AVIOContext 自定义 IO 及 seek
ffmpeg分析系列之六(再次探测输入的格式)
(转)ffmpeg 解码ts流示例
linux下面如何用ffmpeg将h264帧数据村存为FLV文件!!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服