Привет! Я пытаюсь настроить прямую трансляцию с камеры для потоковой передачи в браузер Chrome. Мой поток с камеры кодируется в h264, поэтому я хотел бы напрямую отправить его в браузер с помощью элемента gstreamers webrtcbin. Я могу заставить его выдвинуть видео на экран, но проблема в том, что видео искажено. Я проверил это с videotestsrc, чтобы увидеть, пролило ли это прямое кодирование и отправку в браузер.
Вот что я вижу:
Это конвейер:
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.
'''
Что-то мне не хватает?
РЕДАКТИРОВАТЬ : Интересно, что при попытке использовать другой шаблон, такой как шарик, вывод выглядит и ведет себя нормально:
EDIT2 : видео нормально воспроизводится в Firefox ... хммм ... Есть ли у Chrome проблема с отображением h264?
Может ли это иметь какое-то отношение к ключевым кадрам?
EDIT3 : Я прекрасно вижу это, когда запускаю свой трубопровод локально. Может быть, я сбрасываю пакеты?
EDIT4 : Работает нормально, когда на моем ноутбуке работает тот же код. Но на моем Пи я получаю искаженный беспорядок. Что это может быть?
- Процессор на 70-100% (пи имеет 4 ядра, поэтому иногда я получаю больше, чем
100%)
- Проблема с сетью?
- ключевые кадры теряются?
- что-то еще?
Полагаю, я действительно спрашиваю, как бы я отправил поток h264 через webrtc в браузер, используя gstreamer?