Я пытаюсь декодировать кадры с помощью libavcodec. Мои приложения извлекают пакеты rtp из потока rtsp, используя live555. Я довольно много искал причины, по которым avcodec_decode_video устанавливает для got_picture_ptr значение 0, но не смог его найти.
Может ли кто-нибудь сказать мне, как avcodec_decode_video2 работает внутри? Какие причины могут привести к тому, что указатель got_picture_ptr будет установлен в ноль? PS: функция считывает байты, т.е. возвращаемое значение всегда является положительным числом, а не -1. Я в тупике здесь, любая помощь будет оценена. Я не цитировал какой-либо код, поскольку код для декодирования с использованием avcodec_decode_video2 довольно общий, и в моем коде нет ничего особенного (ранее я декодировал потоки rtsp с помощью libavcodec, но не вместе с live555)
avcodec_decode_video2 всегда устанавливает для got_picture_ptr значение 0 при использовании с live555.
Ответы (1)
Ну наконец-то я смог ее решить. Проблема заключалась в том, как я обрабатывал объект MediaSink из live555. Я должен был вызвать функцию afterGettingFrame класса Sink, которую я получил от MediaSink, чего я не делал, из-за чего, хотя я получал данные, я не «читал» данные и не передавал их в метод avcodec_decode_video2.
person
Richard Macwan
schedule
14.01.2013