Воспроизведение RTP-потока со встроенного устройства с использованием сокетов - PullRequest
0 голосов
/ 22 января 2011

Я пишу приложение на встроенном устройстве, которое получает поток RTP, который несет G.729, PCM или H.264.Пакеты поступают в мое приложение как char * к пакету RTP.Я хотел бы иметь возможность видеть или слушать поток (в качестве теста), но на этом устройстве у меня нет плеера.Я подумал, что могу переслать этот поток в сокет и воспроизвести поток RTP где-нибудь еще, как на машине с Linux, на которой работает проигрыватель.Будет ли это возможно?У меня нет RTSP, только RTP.VLC, например, возможный способ сделать это?Могу ли я просто отправить пакеты RTP в сокет, чтобы воспроизвести их на другой стороне?Спасибо!

Ответы [ 3 ]

0 голосов
/ 22 января 2011

нет, вы не можете. простой RTP не содержит никакой информации о формате потока и т. д., только информацию о самом пакете: порядковый номер, метка времени, дополнительная информация о синхронизации. Простейший способ потоковой передачи RTP - это RTP / MPEG TS ( MPEG Transport Stream ).

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

[EDIT] кстати, странно, что вы получаете только RTP-поток без какого-либо описания его формата, обычно его описание предоставляется каким-либо образом RTSP, MPEG-TS или чем-то еще

0 голосов
/ 25 января 2011

пример SDP, который содержит поток H.264:

Server: rtsp server

Content-type: application/sdp

Content-base: rtsp://[some URL]

Content-length: 505



v=0

o=rtsp 1295996924 1590699491 IN IP4 0.0.0.0

s=RTSP Session

i=rtsp server

c=IN IP4 192.168.1.2

t=0 0

a=control:*

m=audio 0 RTP/AVP 97

a=rtpmap: 97 mpeg4-generic/8000/1

a=fmtp: 97 streamtype=5; profile-level-id=15; objectType=2; mode=AAC-hbr;

a=range:npt=now-

a=control:trackID=0

m=video 0 RTP/AVP 96

a=rtpmap:96 H264/90000

a=fmtp:96 profile-level-id=42E015; sprop-parameter-sets=Z0LgFdoHgtE=,aM4wpIA=; packetization-mode=1

a=range:npt=now-

a=framesize:96 480-352

a=control:trackID=1 
0 голосов
/ 22 января 2011

Вы можете пересылать пакеты RTP через сокет UDP.

...