Понимание того, как сгенерировать правильный SDP для предложения / ответа (webrtc) между Android / Iphone

Я изо всех сил пытаюсь понять, как правильно ответить на предложение при передаче сигналов между Iphone и телефоном Android. Из-за разных кодеков Iphone setRemoteDescription дает сбой. Как известно андроид не принимает H264.

(Failed to set remote video description send parameters)

Между android / android все работает нормально, потому что оба телефона имеют одинаковые кодеки VP8 / 9. Но в моем случае IOS отправляет предложение sdp для Android ТОЛЬКО с кодеком H264. Видимо, в этом проблема. Несмотря на то, что Android устанавливает удаленное описание, а затем создает ответ с помощью sdp без информации о кодеке VP8 / 9. Этот ответ sdp устанавливает Iphone с вышеупомянутой ошибкой. Итак, я спрашиваю, почему в ответе android sdp нет строки с VP8 / 9 или каким-либо кодеком. Вы можете увидеть предложения и ответить на sdps в этом вопросе ( предлагать и отвечать sdp). Поэтому я пытаюсь запустить PeerconnectionFactory следующим образом

    let decoderFactory = RTCDefaultVideoDecoderFactory.init()
    let encoderFactory = RTCDefaultVideoEncoderFactory.init()
    let videoCodedInfo = RTCVideoCodecInfo.init(name: kRTCVideoCodecVp8Name )
    encoderFactory.preferredCodec = videoCodedInfo        
    let connectionFactory = RTCPeerConnectionFactory.init(encoderFactory: encoderFactory, decoderFactory: decoderFactory)

Но даже я использую такую ​​инициализацию sdp предлагает и ответы не меняются. Итак, в чем проблема и как я могу создать правильный sdp для android / iOS, чтобы setremotedescription не отображал ошибку.

У меня есть приложение для Android, использующее libjingle с 2015 года, а для приложения IOS - модуль GoogleWebRTC с 2018 года.

3
0
1 541
2

Ответы 2

Ты можешь попробовать

let decoderFactory = RTCDefaultVideoDecoderFactory()
let encoderFactory = RTCDefaultVideoEncoderFactory()
factory = RTCPeerConnectionFactory(encoderFactory: encoderFactory, decoderFactory: decoderFactory)

Я использую https://cocoapods.org/pods/GoogleWebRTC в IOS. Это сработало для меня при вызове с Android 4.x, тип видео - VP8, а при вызове с IOS - видео H264. Надеюсь на тебя

Мне это не помогает. Та же ошибка. В ответ sdp нет информации о кодеке v8. Очень странно.

Kaspars Michulis 01.09.2018 11:28

На Android я использую webrtc.org/native-code/android. Подключил и VP8, и H264 для android и IOS.

phú dương hiển 04.09.2018 06:04

Вы можете попробовать использовать только исходный код Google, но не использовать чей-либо источник. Потому что они конвертировали только в VP8.

phú dương hiển 04.09.2018 06:06

Не могу поменять курс на андроид. Android-приложение использует Android-версию libjingle 2015 года от Google. Но для iOS я использую последнюю версию модуля GoogleWebRTC. Я не уверен, что они противоречат друг другу из-за разных лет выпуска. GoogleWebRTC - это продолжение первозданного libjingle. Для WebRtc есть те же методы и частично тот же код. Я могу только попробовать понизить версию GoogleWebRTC до безупречного libjingle для IOS и проверить, как это работает. Но я не уверен, что мне следует это делать?

Kaspars Michulis 04.09.2018 13:37

попытаюсь обновить мой Android с libjingle до компиляции 'org.webrtc: google-webrtc: 1.0. +'

Kaspars Michulis 04.09.2018 14:17

Как запустить PeerConnectionFactory в Android?

Kaspars Michulis 04.09.2018 21:08

Вы можете попробовать cocoapods.org/pods/WebRTC для IOS, он будет подключен к Android, но это будет использовать только VP8, а не H264. Это делает iphone таким горячим.

phú dương hiển 05.09.2018 03:11

Для iOS я использую pod GoogleWebRTC. Это что-то другое?

Kaspars Michulis 05.09.2018 14:38

да. с WebRTC этот носитель конвертирует только VP8, это значит, что он связан со всем андроидом. можешь попробовать

phú dương hiển 06.09.2018 03:25

@ phúdươnghiển могу я попросить ваш скайп задать некоторые проблемы, мой rtc не может публиковать видео на сервере

famfamfam 06.07.2020 06:33

Мой скайп: [email protected]. Вы можете добавить это @famfamfam

phú dương hiển 08.07.2020 09:50

Я думаю, это проблема версии google-webrtc. но я не знаю почему. вам не следует использовать "org.webrtc: google-webrtc: 1.0. +". вы можете попробовать подходящую версию, например 'org.webrtc: google-webrtc: 1.0.24277'

Другие вопросы по теме