7

Instead of calling av_register_all(), is there an example of selecting a single decoder to use? I guess I would have to call avcodec_register(), av_register_codec_parser() etc...

The question is, which functions exactly should be called, because av_open_input_file() fails with -2 if I don't use av_register_all().

4

1 回答 1

10

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

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

1)硬件加速:

av_register_hwaccel(AVHWAccel*accel);

2) 编解码器/Dec,Enc,DecEnc, 分机。图书馆等……

avcodec_register(AVCodec*codec);

3) 解析器

av_register_codec_parser(AVCodecParser*parser);

4) 比特流过滤器

av_register_bitstream_filter(AVBitstreamFilter*bsf);

5) 注册复用器/解复用器

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);

希望有帮助吗?

于 2012-01-13T20:12:44.593 回答