Dalam chrome dan firefox, kita boleh menggunakan HTMLMediaElement.captureMediaStream() untuk menangkap strim. Tetapi Safari tidak menyokong HTMLMediaElement.captureMediaStream().
Sumber tag video ialah data hls yang diterima dalam segmen.
Adakah terdapat cara lain untuk menangkap data media sebagai MediaStream dalam Safari?
Safari tidak menyokong kaedah tangkapan terusMediaStream, sekurang-kurangnya buat masa ini, seperti yang anda lihat, tetapi satu cara untuk mencapai ini adalah dengan menggunakan kaedah berasaskan ffmpeg pelayar.
Pada masa lalu, menjalankan ffmpeg dalam penyemak imbas tidak praktikal untuk kebanyakan tugas kerana ia terlalu besar dan terlalu perlahan, tetapi pelaksanaan ffmpeg berasaskan WASM (Perhimpunan Web) baru-baru ini telah menjadikannya lebih mudah diakses.
Anda boleh membina penyelesaian berasaskan ffmpeg anda sendiri menggunakan perpustakaan berikut:
Anda benar-benar perlu sedar tentang keperluan untuk sokongan SharedArrayBuffer:
Pautan yang disebutkan di atas ada di sini: https://caniuse.com/sharedarraybuffer
Saya dapati ia berfungsi dengan baik untuk banyak tugas ffmpeg biasa, tetapi ia sensitif kepada fail video yang lebih besar - Saya belum mencuba penukaran HLS-ke-fail, jadi anda perlu mencuba untuk melihat sama ada ia berfungsi untuk keperluan anda . Berikut ialah demo di mana anda boleh menguji kes penggunaan anda: https://ffmpegwasm.netlify. aplikasi/#demo
Arahan ffmpeg yang anda ingin gunakan bergantung pada audio, tetapi kemungkinan besar:
(Lihat soalan dan jawapan ini untuk butiran: Tukar HLS (m3u8) kepada MP4)
Terdapat juga beberapa penyelesaian siap sedia sumber terbuka untuk anda semak - contohnya: