Потоковое видео H.264 через RTP из Live555 в VLC - PullRequest
7 голосов
/ 28 июня 2010

Я буду чрезвычайно признателен, если вы поможете мне решить проблему потоковой передачи H264, которую я пытался решить в течение нескольких недель.

Мне нужно транслировать видео H264 из Live555 (на компьютере с Linux)в VLC Media Player (на компьютере с Windows). С RTSP он работает очень хорошо, но мне нужно использовать RTP без RTSP, а с RTP я не вижу видео. VLC даже не распознает, что поток H264.

Этофайл SDP, передаваемый через RTSP (конфигурация, которая работает):

v=0
o=- 1277647151953158 1 IN IP4 190.40.14.100
s=Session streamed by "testH264VideoAudioStreamer"
i=test-h264-mux.mpg
t=0 0
a=tool:LIVE555 Streaming Media v2007.05.24
a=type:broadcast
a=control:*
a=source-filter: incl IN IP4 * 190.40.14.100
a=rtcp-unicast: reflection
a=range:npt=0-
a=x-qt-text-nam:Session streamed by "testH264VideoAudioStreamer"
a=x-qt-test-inf:test-h264=mux.mpg
m=video 8554 RTP/AVP 96
c=IN IP4 190.40.15.63/7
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=000042;sprop-parameter-sets=H264
a=control:track1

Но если я переключаюсь с RTSP на RTP, он не работает.Я попытался загрузить указанный выше файл SDP в проигрыватель VLC, но это не помогает.

Вот некоторые из результатов отладки VLC Player 0.8.6d:

main input debug: thread 4016 (input) created at priority 1 (input/input.c:265)
main input debug: `rtp://@190.40.15.63:8554' gives access `rtp demux' `' path `@190.40.15.63:8554'
main input debug: creating demux: access='rtp' demux='' path='@190.40.15.63:8554'
main demuxer debug: looking for access_demux module: 0 candidates
main demuxer warning: no access_demux module matched "rtp"
main input debug: creating access 'rtp' path='@190.40.15.63:8554'
main access debug: looking for access2 module: 6 candidates
access_udp access debug: opening server=:0 local=190.40.15.63:8554
main access debug: net: connecting to '[]:0@[190.40.15.63]:8554
main access debug: looking for netrowk module: 1 candidate
ipv6 access debug: 190.40.15.63: Host or service not found
main access debug: using network module "ipv6"
main access debug: removing network module "ipv6"
main access debug: looking for netrowk module: 1 candidate
ipv4 access debug: resolving 190.40.15.63:8554...
ipv4 access debug: resolving :0...
main access debug: using network module "ipv4"
main access debug: removing network module "ipv4"
main access debug: using access2 module "access_udp"
main private debug: pre buffering
access_udp access debug: no RTP header detected
main input debug: creating demux: access='rtp' demux='' path='@190.40.15.63:8554'
main demuxer debug: looking for demux2 module: 45 candidates
ts demuxer warning: TS module discarded (lost sync)
ffmpeg demuxer debug: detected format: mp3

(Там могут быть опечатки, потому что мне пришлось скопировать его вручную - не спрашивайте :))

В VLC 1.0.5 я получаю неизвестный тип полезной нагрузки ошибка, и SDP не может быть загруженвообще из-за неизвестной ошибки сетевого стека .Другие отображаемые ошибки: Информация о подключении SDP не поддерживается и Предупреждение Sax Demuxer: недействительно SDP .

Любая помощь будет принята с благодарностью!

Спасибо

Илья

1 Ответ

8 голосов
/ 29 июня 2010

Что мне нужно было сделать, это использовать файл SDP вместо непосредственного открытия потока.Оказывается, данные SDP передаются только при использовании RTSP.При потоковой передаче RTP я должен был сам предоставить файл SDP.

Итак, я сделал:

  1. Поток с RTSP (метод, который работает),
  2. Используйте Wireshark для записи файла SDP, передаваемого по RTSP,
  3. Сохраните SDP в виде текстового файла с расширением .sdp,
  4. В VLC откройте файл SDP вместо непосредственного открытия сетевого потока.

И это волшебство!

...