ffplay - как получить AVDictionary codec_opts - PullRequest
0 голосов
/ 04 декабря 2018

Поскольку я получаю артефакты декодирования с помощью специального приложения проигрывателя ffmpeg ( декодирование потока ffmpeg - артефакты, когда не используется ffplay ), в то время как ffplay показывает идеальное изображение без артефактов, мне нужно реализовать мой проигрыватель таким же образомffplay делает.

ffplay.c использует

AVDictionary *codec_opts;

, который инициализируется (поправьте меня) в cmdutils.c .Мне нужен этот словарь, чтобы сделать аналог инициализации кодека ffplay (строка 2615f.), Но я не понимаю, как он создается.Есть ли способ

a) включить cmdutils так же, как это делает ffplay - в конце концов, ссылка на cmdutils.o дает мне

:-1: error: /.../cmdutils.o: undefined reference to symbol 'swresample_version@@LIBSWRESAMPLE_3'

, хотя я включил libswresample с помощью (QT):

LIBS +=-L/usr/local/lib -lavformat -lswscale -lswresample -lavutil -lavcodec 

б) получить доступ к AVDictionary codec_opts любым другим способом?

1 Ответ

0 голосов
/ 06 декабря 2018

Да, вы можете создать и установить AVDictionary *codec_opts для своей собственной реализации.
Проверьте следующие примеры:

1) https://github.com/sparrowli/laimpeg/blob/0a68db7d88c0b42c3df584e66366b4e81d3b31ee/libavutil/tests/dict.c
2) https://github.com/ithinkso117/DotNetPusher/blob/cf24e7e10a0b2fa843b435d3d3b759a7aa049d1d/DotNetPusher.Native/Encoder.cpp

А что касается включения cmdutils.c, это никогда не сработает.Вы можете использовать библиотеки FFmpeg только через API и связываться с общими библиотеками.

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...