Что происходит:
Мне интересно, как мне настроить мой конвейер? Я посылаю сырой поток h264 в браузер через webrtc. Я видел пример, когда raw vp8 был отправлен через webrtc.
Симптомы
Причина, по которой я спрашиваю, состоит в том, что мой видеопоток содержит артефакты (искаженное видео?). Видео будет проигрываться менее секунды (несколько кадров) и останавливаться примерно на 5 секунд, а затем воспроизводиться снова в течение нескольких кадров. Я пытаюсь убрать это из моего малинового пи.
Что я пробовал :
Я попробовал тот же самый скрипт на моем ноутбуке, и он работал нормально. Я не совсем уверен, почему я получал искаженное видео с одного устройства, а не с другого?
Моей первой мыслью было, что, возможно, это связано с узким местом процессора, я посмотрел сверху на пи и получил 60% -100 +%. (его кодировка h264 на лету). Но может ли быть так, что он не буферизуется должным образом? Я попытался захватить поток h264 с камеры rpi, и процессор очень низкий, но точно такой же проблемы.
Еще более интересным было то, что он работает нормально, когда я использую Firefox с несколькими остановками (видео останавливается на <1 сек, но продолжается). Что касается того, почему я не уверен. </p>
Я использую gstreamer 1.15 (git) как на моем ноутбуке, так и на пи
Вот мой конвейер:
PIPELINE_DESC = '''
webrtcbin name=sendrecv bundle-policy=max-bundle
videotestsrc is-live=true ! x264enc ! h264parse ! rtph264pay config-interval=-1 !
queue ! application/x-rtp,media=video,encoding-name=H264,payload=96 ! rtpjitterbuffer ! 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.
'''
#this works videotestsrc h264enc on firefox, chrome gives artifacts
Вот как выглядит видео с пи:
![enter image description here](https://i.stack.imgur.com/rCX8l.png)
Мы можем видеть, что внизу должен отображаться небольшой прямоугольник справа с рисунком снега (как материал, который вы видите на старых ЭЛТ без сигнала)
Я использую этот проект Python в качестве своей базы, я только заменил конвейер:
https://github.com/centricular/gstwebrtc-demos
Если бы кто-нибудь мог мне помочь с выяснением, почему или что я могу попробовать, это было бы здорово.