У меня есть два клиента SIP («A» и «B»), подключенные к звездочке в режиме общего моста.Asterisk API SDP Handling
Видео «А» воспроизводится на «В», но видео «В» НЕ Воспроизведение на «А». Я triple проверил с проводами, что медиа (аудио/видео) прибывает на IP-адрес «А». Аудио работает с обеих сторон.
Мое лучшее предположение, что эта проблема связана с внутренней обработкой SDP звездочки.
Итак, давайте углубимся в проблему.
"A" посылает followind INVITE:
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 192.168.7.225:10074;branch=z9hG4bK-224696310;rport
From: "danflu-portsip"<sip:[email protected]>;tag=87652133
To: <sip:[email protected]>
Contact: <sip:[email protected]:10074;transport=udp>;
Call-ID: YTc0NDRjNDYtMWRhMS01MzE2LWVlNDEtYmV
CSeq: 1354707857 INVITE
Content-Type: application/sdp
Content-Length: 447
Max-Forwards: 70
Authorization: Digest username="danflu-portsip",realm="asterisk",nonce="5ac40c6d",uri="sip:[email protected]",response="fae8a78ba97 2f6cb0c76846d76f13786",algorithm=MD5
User-Agent: PortSIP SDK for IOS
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, REGISTER, SUBSCRIBE, INFO
P-Preferred-Identity: <sip:[email protected]>
Supported: 100rel
v=0
o=portsip 2013 678901 IN IP4 192.168.7.225
s=-
c=IN IP4 192.168.7.225
t=0 0
m=audio 20554 RTP/AVP 8 0 97 18
a=ptime:20
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:97 SPEEX/8000
a=rtpmap:18 g729/8000
a=fmtp:18 annexb=yes
a=sendrecv
a=ssrc:258325709 cname:258325709
m=video 29350 RTP/AVP 104
a=rtpmap:104 H264/90000
a=fmtp:104 profile-level-id=42801E; packetization-mode=1
a=sendrecv
a=ssrc:1956389748 cname:1956389748
и получает "200 OK" сообщение от Звездочка:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.7.225:10010;branch=z9hG4bK-282879312 received=192.168.7.225;
rport=10010
From: "danflu-portsip"<sip:[email protected]>;tag=539964865
To: <sip:[email protected]>;tag=as1b6086b5
Call-ID: OTE4MjM3NzUtMDIzNy1mNTM1LWM3MzYtOGZ
CSeq: 1074035624 INVITE
Server: Asterisk PBX SVN-branch-1.8-r402287M
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Contact: <sip:[email protected]7.227:5060>
Content-Type: application/sdp
Content-Length: 375
v=0
o=root 826339596 826339596 IN IP4 192.168.7.227
s=Asterisk PBX SVN-branch-1.8-r402287M
c=IN IP4 192.168.7.227
b=CT:384
t=0 0
m=audio 9540 RTP/AVP 8 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
m=video 7450 RTP/AVP 104
a=rtpmap:104 H264/90000
a=sendrecv
Обратите внимание, что линии:
a = fmtp: 104 profile-level-id = 42801E; пакетирование режим = 1
и
а = SSRC: 1956389748 CNAME: 1956389748
просто исчез в ответ, и я действительно думаю, вот причина видео не работает.
Итак, мой вопрос:
Что API можно использовать для настройки поведения, поэтому строки выше не удаляются, когда Asterisk обрабатывает SDP с обеих сторон? Если нет официального API, где я могу посмотреть в коде для этого? Значит, я мог бы написать патч для моей конкретной ситуации?
Я посмотрел в chan_sip.c и есть функция:
статические INT process_sdp (структура sip_pvt * р, структура sip_request * REQ, внутр t38action)
Но я не уверен, что эта обработка SDP (удаление линий и т. п.) выполняется с помощью ядра звездочки или с помощью драйвера канала sip.
Thanks
Спасибо за ответ. Знаете ли вы, что эта «фильтрация» SDP выполняется «ядром» Asterisk или только драйвером канала SIP? – user1558688
ядро не знаю ничего о SDP. Фильтров нет, есть кодеки. Транскодирование для видео не реализовано. Предпочтение реализовано, но не работает. Повторное приглашение (начало видео после запуска звука) реализовано, но зависит от программных телефонов/телефонов с обеих сторон. – arheops
Итак, кто удаляет линии SDP, это драйвер канала SIP (chan_sip.c), правильно? В основном мне нужно понять его внутреннюю работу и исправить ее там. Другая возможность - реализовать прокси-сервер SIP между устройством sip и звездочкой и фильтровать все данные в самом прокси. Есть ли у вас какие-либо другие идеи, предложения? Большое спасибо ! – user1558688