MPEG4 вне Raw полезной нагрузки RTP

Хорошо, у меня возникла следующая проблема:

  1. У меня есть IP-камера, которая может передавать данные MPEG4 через RTP.

  2. Я могу подключиться к этой камере через RTSP

  3. Я могу получить необработанные данные RTP.

Так какие проблемы у меня сейчас?

<сильный>1. Извлечь данные

Какие данные мне действительно нужны? Я знаю, что мне нужно перенаправить RTP Header, но есть ли что-то еще, что мне нужно вырезать из пакетов RTP?

<сильный>2. Режим пакетирования

Я читал, что я должен ожидать поле Packetization Mode в моем SDP- ну его там нет. Означает ли это, что я должен использовать какой-то стандартный режим пакетирования?

<сильный>3. Депакетизация

Если я правильно понял, мне нужно буферизовать все входящие кадры с Marker Bit = false, пока я не получу кадр с Marker Bit = true, чтобы получить полный MPEG4 Frame. Что именно я должен понимать под MPEG4 Frame? Ключевой кадр + данные до следующего ключевого кадра?

<сильный>4. Расшифровать

Могу ли я расшифровать данные дальше? В других темах видел, что люди использовали другой декодер - а что там декодировать осталось? Я имею в виду, что камера должна отправлять данные уже MPEG4 закодированными?

<сильный>5. Библиотеки

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

Примечание. Все, что я хочу сделать, должно быть частью моего собственного приложения, то есть, например, я не могу использовать внешнее программное обеспечение для анализа данных.

Короче говоря, мне действительно нужно какое-то пошаговое объяснение для этого. Я знаю, что это широкий вопрос, но я больше ничего не знаю. Я также просмотрел RFCs, но не смог извлечь из них много информации.

Также я уже просмотрел эти два вопроса:

Как обрабатывать необработанные UDP-пакеты, чтобы их можно было декодировать фильтром декодера в фильтре источника directshow

Извлечение MPEG4 из полезной нагрузки RTP

Но и длинный ответ на первый вопрос не смог мне все прояснить.

ОБНОВЛЕНИЕ: Ну, я сообщил немного больше, и теперь я не знаю, где искать больше. Кажется, что вся эта пакетизация и т. д. на самом деле не нужны для моей цели. Я также записал поток с openRTSP. Когда я открываю эти файлы в шестнадцатеричном редакторе, я вижу, что есть 16 байтов, которые я не могу идентифицировать, за которыми следует часть config из SDP. Затем кадр начинается с обычного 00 00 01 B6. Также oprenRTSP добавляет какой-то хвост к MP4 - ну, я на самом деле не знаю, что мне нужно, а что это просто какие-то "дополнительные" вещи, которые не являются обязательными.


person Toby    schedule 06.03.2012    source источник


Ответы (1)


Я знаю, что мне нужно перенаправить заголовок RTP, но есть ли что-то еще, что мне нужно вырезать из пакетов RTP?

Пакет RTP может содержать данные из формата файла (например, MP4) или может быть напрямую основан на RFC 3640 или что-то подобное. Вам нужно выяснить это.

Что именно я должен понимать под MPEG4 Frame? Ключевой кадр + данные до следующего ключевого кадра? Могу ли я расшифровать данные дальше? В других темах видел, что люди использовали другой декодер - а что там декодировать осталось? Я имею в виду, что камера должна отправлять данные, уже закодированные в формате MPEG4?

Вы должны изучить основы сжатия MPEG, чтобы оценить это в полной мере. Депакетизация дает вам только строку битов. Это сжатые данные. Вам нужно распаковать его (декодировать), чтобы увидеть его на экране.

есть ли открытые библиотеки, которые я мог бы использовать для этого?

попробуйте ffmpeg или MPEG4IP

person Dipan Mehta    schedule 23.03.2012