1 / 7
文档名称:

ffmpeg源码分析之媒体打开过程.pdf.pdf

格式:pdf   页数:7页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ffmpeg源码分析之媒体打开过程.pdf.pdf

上传人:755273190 2015/10/27 文件大小:0 KB

下载得到文件列表

ffmpeg源码分析之媒体打开过程.pdf.pdf

相关文档

文档介绍

文档介绍:BBS. -- 财经医疗软件娱乐养生综合信息论坛

ffmpeg 源码分析之媒体打开过程

avformat_open_input(),下面是对此函数的分析
[cpp] view plaincopy
1. //参数 ps 包含一切媒体相关的上下文结构,有它就有了一切,本函数如果打开媒体成功,
2. //会返回一个 AVFormatContext 的实例.
3. //参数 filename 是媒体文件名或 URL.
4. //参数 fmt 是要打开的媒体格式的操作结构,因为是读,所以是
5. //传入一个调用者定义的 inputFormat,对应命令行中的-f xxx 段,如果指定了它,
6. //在打开文件中就不会探测文件的实际格式了,以它为准了.
7. //参数 options 是对某种格式的一些操作,是为了在命令行中可以对不同的格式传入
8. //特殊的操作参数而建的, 为了了解流程,完全可以无视它.
9. int avformat_open_input(AVFormatContext **ps,
10. const char *filename,
11. AVInputFormat *fmt,
12. AVDictionary **options)
13. {
14. AVFormatContext *s = *ps;
15. int ret = 0;
16. AVFormatParameters ap = { { 0 } };
17. AVDictionary *tmp = NULL;
18.
19. //创建上下文结构
20. if (!s && !(s = avformat_alloc_context()))
21. return AVERROR(ENOMEM);
22. //如果用户指定了输入格式,直接使用它
23. if (fmt)
24. s->iformat = fmt;
25.
26. //忽略
27. if (options)
28. av_dict_copy(&tmp, *options, 0);
29.
30. if ((ret = av_opt_set_dict(s, &tmp)) < 0)
31. goto fail;
32.
33. //打开输入媒体(如果需要的话),初始化所有与媒体读写有关的结构们,比如
34. //AVIOContext,AVInputFormat 等等
35. if ((ret = init_input(s, filename)) < 0)
36. goto fail;
37. //执行完此函数后,s->pb 和 s->iformat 是用于读写数据的,它
BBS.
BBS. -- 财经医疗软件娱乐养生综合信息论坛

38. //把媒体数据当做流来读写,不管是什么媒体格式,而 iformat 把 pb 读出来的流按某种媒体格
39. //式进行分析,也就是说 pb 在底层,i