av_register_all()与avcodec_register()

时间:2011-02-16 13:05:23

标签: libavcodec libavformat

有没有选择使用单个解码器的示例,而不是调用av_register_all()? 我想我必须调用avcodec_register(),av_register_codec_parser()等...

问题是,应该调用哪些函数,因为如果我不使用av_register_all(),av_open_input_file()将失败-2。

1 个答案:

答案 0 :(得分:10)

有一种方法可以做到这一点:)我刚刚写下了av_register_all所做的所有步骤。我认为这可能会让你更好地理解,因为仅仅注册编解码器可能还不够。最好是自己看看源代码:

http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/allformats_8c-source.html

1)硬件加速:

av_register_hwaccel(AVHWAccel*accel);

2)Codecs / Dec,Enc,DecEnc,ext。图书馆等....

avcodec_register(AVCodec*codec);

3)解析器

av_register_codec_parser(AVCodecParser*parser);

4)比特流过滤器

av_register_bitstream_filter(AVBitstreamFilter*bsf);

5)注册Mux / Demuxers

av_register_output_format(AVOutputFormat*ov);
av_register_input_format(AVInputFormat*if);

6)如果RTP:

av_register_rtp_dynamic_payload_handlers();
av_register_rdt_dynamic_payload_handlers();

7)协议

av_register_protocol2(URLProtocol*pr, int size);

希望有帮助吗?