ffmpeg解析-----解析文件格式
来源:互联网 发布:网络打印服务器软件 编辑:程序博客网 时间:2024/05/02 01:27
1注册所有的av codec, av format, av device
av_register_all();
2打开文件
int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
AVInputFormat *fmt,
int buf_size,
AVFormatParameters *ap)
{
需要提供的参数:
a. AVFormatContext **ic_ptr
b. filename
eg:
if(av_open_input_file(&pFormatCtx, argv[1], NULL, 0, NULL) != 0){
fprintf(stderr, "open rtsp failed/n");
exit(0);
}
该文件的内部实现:
2.1 构造AVProbeData:
pd->filename = "";
if (filename)
pd->filename = filename;
pd->buf = NULL;
pd->buf_size = 0;
2.2 检测文件的格式
fmt = av_probe_input_format(pd, 0);
av_probe_input_format检测左右注册的AVInputFormat,判断文件的格式,返回正确的AVInputFormat结构。如果指定的文件是rtsp格式的,那么返回AVInputFormat rtsp_demuxer(位于libavformat/rtsp.c中)
2.2 打开文件
err = av_open_input_stream(ic_ptr, pb, filename, fmt, ap)
int av_open_input_stream(AVFormatContext **ic_ptr,
ByteIOContext *pb, const char *filename,
AVInputFormat *fmt, AVFormatParameters *ap)
pb:Bytestream IO Context.根据结构表示的是字节流的输入输出结构,那么以后读取数据是否可以从这个结构中读取?
在这个函数中给ic_ptr赋值,让ic_ptr记住文件的各种属性,因为这个结构要传递给应用程序:
ic->iformat = fmt;
ic->pb = pb;
ic->duration = AV_NOPTS_VALUE;
ic->start_time = AV_NOPTS_VALUE;
av_strlcpy(ic->filename, filename, sizeof(ic->filename));
对于rtsp协议而言, fmt->private_data_size是 sizeof(RTSPState),那么ic->priv_data应该是RTSPState结构.
/* allocate private data */
if (fmt->priv_data_size > 0) {
ic->priv_data = av_mallocz(fmt->priv_data_size);
if (!ic->priv_data) {
err = AVERROR(ENOMEM);
goto fail;
}
} else {
ic->priv_data = NULL;
}
读取rtsp信息的header,对于rtsp,就是调用rtsp_read_header函数.
if (ic->iformat->read_header) {
err = ic->iformat->read_header(ic, ap);
if (err < 0)
goto fail;
}
}
2.3 返回
- ffmpeg解析-----解析文件格式
- FFmpeg中函数avformat_open_input()(含URL解析文件格式)
- ffmpeg解析
- vCalendar文件格式解析
- MP3文件格式解析
- Windows快捷方式文件格式解析
- MP3文件格式解析
- java class文件格式解析
- PLY文件格式及其解析
- MP3文件格式解析
- GIF文件格式解析
- MP3文件格式解析
- MIDI文件格式解析
- [ZT]WSDL文件格式解析
- Windows快捷方式文件格式解析
- MP3文件格式解析
- QuickTime文件格式解析
- BMP文件格式解析
- vector和set的区别之一
- Wince音量设置
- 初级JavaScript程序员的绝佳进阶书
- 编译libtorrent小记
- c#四舍五入运算代码
- ffmpeg解析-----解析文件格式
- [转] 当猫爱上蝴蝶
- SQL查询多条记录显示为一条的处理办法
- 创业兵法之软件用户们最后的战役
- 常用正则表达式大全
- miniLZO项目在winCE下的使用
- ASP.net 中 OutputCache 指令各个参数的作用
- TCP和UDP--简单解释
- 创业兵法——高性能软件设计之争