Дело с разрешением изменилось при декодировании? - PullRequest
1 голос
/ 02 марта 2020

Я использую FFMPEG с C ++ для чтения кадров и декодирования их из потока RTSP на IP-камере.

Все в порядке, но во время декодирования я пытаюсь изменить конфигурацию разрешения потока на IP-камере (например: изменить с 1280х720 до 1920х1080).

Результат равен av_read_frame(), в то время как l oop все еще считывает успешные последующие кадры (с новым разрешением) без ошибок. Поэтому я не могу обнаружить это изменение для повторного запуска буфера или повторного подключения потока для обновления информации другого потока.

av_read_frame() будет считывать AVPacket. Если я могу прочитать информацию о разрешении в AVPacket, то я могу обнаружить это изменение и переустановить буфер. Но я не вижу никакой информации о разрешении в структуре AVPacket.

Кто-то может мне помочь, как обнаружить изменение разрешения при чтении и декодировании потока?

ОБНОВЛЕНИЕ

I ' м с использованием многих кодеков, таких как H264 и H265 / H265 +. Этот случай произошел со всеми тремя вышеописанными кодеками.

Во многих случаях я также сохраняю AVPacket для последующего воспроизведения, поэтому нет необходимости в декодировании. Мне нужно немедленно определить изменение разрешения, чтобы правильно построить информацию заголовка для хранения на жестком диске.

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

В разрешении диапазона не может быть обнаружено av_read_frame(), потому что av_read_frame() не анализирует кадр, он только считывает данные из потока и помещает их в буфер. Вам нужно будет использовать синтаксический анализатор bitstreram или отправить кадр декодеру (если декодер поддерживает изменения разрешения). Однако каждый код c отличается от других, поэтому я не могу дать вам больше информации, если не знаю, какой код c вы используете.

0 голосов
/ 03 марта 2020

Я решил эту проблему с помощью функции av_parser_parse2() для анализа информации, такой как Resolution из AVPacket, и сравнения ее со старыми значениями, чтобы обнаружить изменение, а затем снова подключить его.

Спасибо всем!

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