У меня есть приложение voip, над которым я работаю, используя стек OPIP voip SIP.
Я переопределяю класс с именем OpalLocalEndpoint и читаю / записываю закодированные данные в и из моих конвейеров gstreamer. Для чтения я беру полезные данные rtp из аппинкса, а для записи помещаю загруженные данные в appsrc.
Я захватил файлы SDP из wireshark.
Вот клиент для приложения.
v=0
o=- 1319058426 1 IN IP4 192.168.0.71
s=Opal SIP Session
c=IN IP4 192.168.0.71
t=0 0
m=audio 5086 RTP/AVP 125 0 8 124 101
a=sendrecv
a=rtpmap:125 Speex/16000/1
a=fmtp:125 sr=16000,mode=any
a=rtpmap:0 PCMU/8000/1
a=rtpmap:8 PCMA/8000/1
a=rtpmap:124 Speex/8000/1
a=fmtp:124 sr=8000,mode=any
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16,32,36
m=video 5088 RTP/AVP 109 108 34 114
b=AS:4096
b=TIAS:4096000
a=sendrecv
a=rtpmap:109 h264/90000
a=fmtp:109 packetization-mode=1;profile-level-id=42C01E
a=rtpmap:108 h263-1998/90000
a=fmtp:108 D=1;F=1;I=1;J=1;CIF=1;CIF4=1;QCIF=1;CUSTOM=320,240,1;CUSTOM=640,480,1
a=rtpmap:34 h263/90000
a=fmtp:34 F=1;CIF=1;CIF4=1;QCIF=1
a=rtpmap:114 MP4V-ES/90000
a=fmtp:114 profile-level-id=5
Вот сервер, отвечающий клиенту
v=0
o=- 1319058099 1 IN IP4 192.168.0.215
s=HHP Video Codec/1.0
c=IN IP4 192.168.0.215
t=0 0
m=audio 5006 RTP/AVP 125 0 8 124
a=inactive
a=rtpmap:125 Speex/16000/1
a=rtpmap:0 PCMU/8000/1
a=rtpmap:8 PCMA/8000/1
a=rtpmap:124 Speex/8000/1
a=maxptime:20
m=video 5004 RTP/AVP 109
b=AS:2048
b=TIAS:2048000
a=sendrecv
a=rtpmap:109 h264/90000
a=fmtp:109 packetization-mode=1;profile-level-id=42c01e
Я кодирую данные с помощью:
v4l2src name=videoSrc ! video/x-raw-yuv, format=(fourcc)I420, width=352, height=288, framerate=(fraction)30/1 ! videobalance name=VideoBalance ! textoverlay name=chanNameFilter ! textoverlay name=osdMessageFilter ! textoverlay name=sessionTimerOverlay ! x264enc byte-stream=true bframes=0 b-adapt=0 tune=0x4 speed-preset=3 bitrate=256 sliced-threads=false profile=0 ! rtph264pay mtu=1412 ! appsink name=videoAppSink sync=false
И попытка декодировать входящие данные с помощью
appsrc is-live=true do-timestamp=false typefind=true name=videoAppSrc ! application/x-rtp, media=video, payload=109, clock-rate=90000, encoding-type=H264, byte-stream=true, access-unit=true ! rtph264depay ! ffdec_h264 ! xvimagesink name=videoOutputSink
Однако, хотя закодированные данные отображаются на клиенте (вначале этого не было, мне пришлось добавить все эти свойства, пока они, наконец, не отобразились правильно), я не смог заставить конец декодирования работать .
Показывает в основном серый экран с бликами розового, желтого и зеленого. Иногда я получаю немного больше правильных цветов и большую часть времени просто серый.
Если я использую тот же самый конвейер для взаимодействия с VLC, он работает нормально. Я предполагаю, что я где-то лохофу Может кто-нибудь предложить какие-либо идеи о том, что я должен искать?
У меня такие же проблемы с каждым другим моим кодировщиком, т. Е. С теорой, h263 и т. Д., Хотя у каждого по-своему.