利用FFmpeg和管道(pipe),解决非URL和非文件的输入形式
问题描述:利用FFmpeg来解码,但是输入方式不是URL,也不是文件系统中的文件,而是内存中的buffer。
解决此问题有两个思路,首先明确一点,libavformat中有几个类,有URLProtocol(虽然叫URLxxx,但是不仅仅是URL的,它可是掌管了所有的输入方式),AVOutputFormat(有muxer也有demuxer),AVInputFormat(有muxer也有demuxer)。
它们对应实例可以举几个例子:
URLProtocol::ff_pipe_protocol、ff_http_protocol、ff_file_protocol。。。
AVOutputFormat:ff_mpegts_demuxer、ff_mp3_demuxer。。。
AVInputFormat:ff_mpegts_demuxer、ff_mp3_demuxer。。。
然后来说int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);函数,