webrtc h264 видео искаженный хром - PullRequest
0 голосов
/ 13 января 2019

Привет! Я пытаюсь настроить прямую трансляцию с камеры для потоковой передачи в браузер Chrome. Мой поток с камеры кодируется в h264, поэтому я хотел бы напрямую отправить его в браузер с помощью элемента gstreamers webrtcbin. Я могу заставить его выдвинуть видео на экран, но проблема в том, что видео искажено. Я проверил это с videotestsrc, чтобы увидеть, пролило ли это прямое кодирование и отправку в браузер.

Вот что я вижу:

enter image description here

Это конвейер:

PIPELINE_DESC = '''
webrtcbin name=sendrecv bundle-policy=max-bundle
 videotestsrc is-live=true pattern=snow ! videoconvert ! queue ! x264enc ! rtph264pay !
 queue ! application/x-rtp,media=video,encoding-name=H264,payload=96 ! sendrecv.
 audiotestsrc is-live=true wave=red-noise ! audioconvert ! audioresample ! queue ! opusenc ! rtpopuspay !
 queue ! application/x-rtp,media=audio,encoding-name=OPUS,payload=96 ! sendrecv.
'''

Что-то мне не хватает?

РЕДАКТИРОВАТЬ : Интересно, что при попытке использовать другой шаблон, такой как шарик, вывод выглядит и ведет себя нормально:

enter image description here

EDIT2 : видео нормально воспроизводится в Firefox ... хммм ... Есть ли у Chrome проблема с отображением h264?

Может ли это иметь какое-то отношение к ключевым кадрам?

EDIT3 : Я прекрасно вижу это, когда запускаю свой трубопровод локально. Может быть, я сбрасываю пакеты?

EDIT4 : Работает нормально, когда на моем ноутбуке работает тот же код. Но на моем Пи я получаю искаженный беспорядок. Что это может быть?

  • Процессор на 70-100% (пи имеет 4 ядра, поэтому иногда я получаю больше, чем 100%)
  • Проблема с сетью?
  • ключевые кадры теряются?
  • что-то еще?

Полагаю, я действительно спрашиваю, как бы я отправил поток h264 через webrtc в браузер, используя gstreamer?

...