Bisakah RTCMultiConnection menggunakan H264 dan bukan VP9 untuk berbagi layar?

Saya sedang mengerjakan proyek terkait berbagi layar, dan satu-satunya masalah yang saya temui adalah kebutuhan untuk menampilkan layar yang dibagikan dari PC atau Mac (browser Chromium, sebenarnya aplikasi Electron), pada Raspberry PI (saya menggunakan model 3 B, yang paling modern). Dalam percobaan saya, proyek ini baru saja dimulai, saya menggunakan RTCMultiConnection untuk berbagi layar dan menontonnya.

Masalahnya adalah, kecepatannya sangat lambat (2-3 fps, terkadang dengan penundaan 10 detik) bahkan dengan akselerasi HW penuh diaktifkan di Chromium yang menampilkannya, dan saya sangat memahami alasannya: karena menggunakan codec VP9, ​​yang tidak ada akselerasi HW-nya. pada Raspberry.

Pertanyaannya adalah: bisakah saya menggunakan H264 di RTCMultiConnection? Jika ya, bagaimana caranya? Saya tahu WebRTC sendiri pada dasarnya mendukungnya.


person Mikhail Novikov    schedule 07.10.2017    source sumber


Jawaban (1)


Tambahkan kode berikut di file demo HTML Anda:

connection.processSdp = function(sdp) {
    // remove VP8+VP9 so that Firefox can use H264
    sdp = CodecsHandler.removeVPX(sdp);
    return sdp;
};

Buka direktori "dev" dan buka file ini: dev/CodecsHandler.js#L5-L30 baris 5 hingga 30.

Pastikan jalur VP8 dan VP9 sudah benar.

a=rtpmap:100
a=rtpmap:101

Mungkin VP8 adalah 96 dan VP9 adalah 98. Jadi ganti rtpmap sesuai. Misalnya.

a=rtpmap:96
a=rtpmap:98

Pastikan untuk menguji hanya menggunakan Firefox. Saya tidak tahu apakah saluran stabil Chrome juga mendukung H264.

Fireox mungkin memerlukan beberapa tanda. Anda dapat mencari h264 bendera di about:config

Pastikan untuk menautkan dev/CodecsHandler.js di file demo HTML Anda, segera setelah dist/RTCMultiConnection.min.js.

<script src="dist/RTCMultiConnection.min.js"></script>
<script src="dev/CodecsHandler.js"></script>
<script>
var connection = new RTCMultiConnection();
connection.socketURL = 'https://yourserver.com:9001/';
connection.processSdp = function(sdp) {
    // remove VP8+VP9 so that Firefox can use H264
    sdp = CodecsHandler.removeVPX(sdp);
    return sdp;
};
connection.openOrJoin('roomid');
</script>
person Muaz Khan    schedule 07.10.2017
comment
Terima kasih! Meskipun lingkungan saya berbeda dan tidak seperti yang Anda bayangkan, lingkungan saya menunjukkan jalannya dan pada akhirnya saya berhasil. Anehnya, ini juga berfungsi dengan baik di Chrome. - person Mikhail Novikov; 09.10.2017