2012-03-06 4 views
3

Хорошо, я получил следующую задачу:MPEG4 из Raw RTP Payload

  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? Keyframe + данные до следующего ключевого кадра?

4. Декодирование

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

5. Библиотеки

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

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

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

Кроме того, я уже посмотрел эти два вопроса:

How to process raw UDP packets so that they can be decoded by a decoder filter in a directshow source filter

MPEG4 extract from RTP payload

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

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

ответ

1

Я знаю, что я должен trunkate РТП Заголовок - но есть что-нибудь еще мне нужно вырезать из пакетов RTP?

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

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

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

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

попробовать ffmpeg или MPEG4IP

Смежные вопросы