av_register_all () против avcodec_register () - PullRequest
7 голосов
/ 16 февраля 2011

Вместо вызова av_register_all (), есть ли пример выбора одного декодера для использования? Я думаю, мне нужно было бы вызвать avcodec_register (), av_register_codec_parser () и т. Д ...

Вопрос в том, какие именно функции следует вызывать, потому что av_open_input_file () завершается с -2, если я не использую av_register_all ().

1 Ответ

10 голосов
/ 14 января 2012

Есть способ сделать это :) Я только что записал для вас все шаги, которые выполняет 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, ext.Библиотеки и т.д.

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

Надеюсь, что помогло?

...