Я использую ffmpeg для записи потока RTSP MPEG4 с камеры.
- RTSP был установлен путем вызова функции avformat_open_input
- Кадр принимается с камеры с помощью
av_read_packet
(contest, &пакет) и сохраняется в структуре AVPacket. - Теперь я хочу разобрать этот кадр, чтобы определить, какой я кадр, прежде чем он будет сохранен в файл. Использование функции
avcodec_decode_video
, которая может помочь мне в этом случае, но из-за декодирования с задержкой, это не лучший выбор для меня. Во всяком случае, я хочу использовать другой способ
Просто я думаю, что package.data содержит формат RTP, который включает заголовок RTP + данные RTP.
Я просмотрел некоторые другие объявления, такие как: decoded-by-a-decoder-filter-i">как обрабатывать пакет данных рисования и разбор MPEG-4 из rtp-пакета. На самом деле они выглядят очень близко к тому, что мне нужно, и, возможно, я что-то не так сделал. Поэтому я до сих пор не могу понять, где 12 байт для RTP-заголовка в packet.data и что дальше? Мне действительно нужна информация о плоскости объекта I, P или B.
Попытка разобрать формат RTP, но кажется, что packet.data либо содержит некоторую дополнительную информацию, чем чистый формат RTP, либо не содержит заголовка RTP. Я не уверен.
Выстрел:
How can I parse the frame to get frame info (I, P or B) in AVPacket