ffmpeg常用api详解
一.libavformat
1.avformat_open_input
打开一个输入流并读取header,编码器并没有打开,需要使用avformat_close_input进行关闭
int avformat_open_input(AVFormatContext **ps, const char *url,
const AVInputFormat *fmt, AVDictionary **options);
参数:
- ps:指向用户提供的AVFormatContext(由avformat_alloc_context分配),可以是一个NULL指针,这种情况下avformat_open_input内部会分配ps的内存。需要注意在函数失败时,用户提供的ps会被释放
- url:要打开的stream路径
- fmt:如果不为NULL,该参数强制指定输入格式,否则自动检测格式
- options:可以为NULL
返回值:
- 0表示成功,失败返回负的AVERROR
2.avformat_find_stream_info
读取媒体文件的数据包以获取流信息,这对于没有标头的文件格式(如MPEG)很有用,读取过的数据包可能会被缓存供以后使用