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