ffmpeg如何将输入文件分成多个输入流?具体是如何实现的?
在ffmpeg中,输入文件对应的结构体是InputFile而输入流对应的结构体是InputStream,,在ffmpeg中一个输入文件会对应多个输入流,那么输入流划分的依据是什么?又是如何划分的(求代码段),以及为什么要将输入文件和输入流分开保存?而不是直接去处理输入文件?是因为一个输入文件中有视频、音频、字幕所以将这三者分开么?输入流还会不会被分的更细的粒度?
无爱D飞鱼
12 years ago
Answers
在ffmpeg中,输入文件是以数组形式组织起来,放在input_files数组中的;而每个输入文件又对应多个输入流,在每个输入流结构体AVInputStream中有成员变量file_index去标识每个输入流所属的输入文件,相应的输入文件结构体中也有成员变量,用以标识这个输入文件对应的输入流在输入流数组input_streams的起始位置和输入流的个数;
在ffmpeg中输入文件分流是通过demuxer进行的,而demuxer在ffmpeg中又是通过AVInputFormat实现的,提供的接口;因此可以认为ffmpeg先通过输入文件后缀名找到匹配的demuxer,然后利用demuxer对输入文件中的数据进行分流,我们现在知道一种分流方式,即最简单的将多媒体数据文件分成音频流,视频流和字幕流;但是还有没有其他的分流方式还有待研究。
能美库朵缭卡
answered 12 years ago