Bazı olaylar tetiklendiğinde video/ses akışını duraklatması/sürdürmesi gereken bir web uygulaması oluşturmak için WebRTC'yi kullanmaya çalışıyorum. getTracks()[0].stop()
'u denedim ancak akışı nasıl devam ettireceğimi bilmiyorum.WebRTC duraklat ve devam akışı
5
A
cevap
10
getTracks()[0].stop()
kalıcıdır bir göz alabilir RTCRtpSender ve addTrack
ve removeTrack
yöntemleri kullanmak gerekir, doğrudan removeStream
yoktur. Bunun yerine, getTracks()[0].enabled = false
kullanın. getTracks()[0].enabled = true
'u duraklatmak için.
Bu, videonuzu siyah ve sesinizi sustu ile değiştirir.
onu (Chrome için kullanım https fiddle) deneyin:var pc1 = new RTCPeerConnection(), pc2 = new RTCPeerConnection();
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then(stream => pc1.addStream(video1.srcObject = stream))
.catch(log);
var mute =() => video1.srcObject.getTracks().forEach(t => t.enabled = !t.enabled);
var add = (pc, can) => can && pc.addIceCandidate(can).catch(log);
pc1.onicecandidate = e => add(pc2, e.candidate);
pc2.onicecandidate = e => add(pc1, e.candidate);
pc2.onaddstream = e => video2.srcObject = e.stream;
pc1.onnegotiationneeded = e =>
pc1.createOffer().then(d => pc1.setLocalDescription(d))
.then(() => pc2.setRemoteDescription(pc1.localDescription))
.then(() => pc2.createAnswer()).then(d => pc2.setLocalDescription(d))
.then(() => pc1.setRemoteDescription(pc2.localDescription))
.catch(log);
var log = msg => div.innerHTML += "<br>" + msg;
<video id="video1" height="120" width="160" autoplay muted></video>
<video id="video2" height="120" width="160" autoplay></video><br>
<input type="checkbox" onclick="mute()">mute</input><div id="div"></div>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
PeerConnections temelde bu sessiz durumdaki paketleri göndermeyi durdurmak, bu yüksek verimli bu yüzden.
1
Sen yeniden müzakere kullanarak denemelisiniz, ben fark hala krom ve ateş nasıl yapıldığını varolduğuna inandığı:
krom olarak, sadece eklemek
PeerConnection
nesne üzerindeaddStream
veyaremoveStream
çağrı/kaldır Akışı oluşturun vesdp
'u değiştirin.ateş, size this question
İlgili konular
- 1. multithread duraklat ve devam
- 2. D3 geçişler - duraklat ve devam
- 3. Django Kereviz İş Akışı Zinciri Duraklat/Devam Et
- 4. Duraklat/Devam http bağlantı indir
- 5. Webrtc: WebRTC yanıtı işlenemedi
- 6. API'daki animasyonu 19'dan (Android) daha az duraklat/devam ettirme?
- 7. WebRTC alıcısı oluşturma
- 8. nodejs to <video> WebRTC kullanarak akışı
- 9. Ses ve gürültü içinde ses webRTC android
- 10. JW Player 6 ara ve duraklat
- 11. Sunucu tarafında webrtc uygulaması
- 12. SpriteKit oyununu duraklatma ve devam ettirme
- 13. WebRTC: getStats kullanımı()
- 14. WebRTC Overhead
- 15. Uzak webRTC MediaStream nasıl kaydedilir?
- 16. Ubuntu'da webrtc oluşturma
- 17. WebRTC: firefox'taki Yenilenmesi
- 18. WebRTC DataChannels Hız Sorunu
- 19. Aynı düğmeyle Oynat/Duraklat [AVAudioPlayer]
- 20. Doğrulama için form teslimini duraklat
- 21. Spritekit'te bir SKAction'ı Swift ile duraklat
- 22. Kesme noktası olmadan gdb'yi duraklat
- 23. YouTube duraklat, çal & çalıştır çalışmıyor
- 24. JavaScript akışı akışı kesintiye uğrayabilir mi?
- 25. webRTC işlevsel olarak nasıl çalışır?
- 26. Ardışık bekletme Devam devam ediyor Devam bekliyor
- 27. Oynat arka plandaki sesi duraklat ve yükle olayları yükle
- 28. MJPEG akışı ve kod çözme
- 29. akışı
- 30. android akışı sunucuya ses akışı
Son cümle belirsiz. "Siyah video" ve "sessizlik" hala devre dışı bırakılmadan önce benzer kodlar kullanacak mı (kod çözme/oluşturma, veri iletimi, vb.)? – JSON
@JSON Cevabını, herhangi bir kaynağı zor kullanmadığını açıklığa kavuşturdum. [Bu keman] 'daki istatistikleri (https://jsfiddle.net/ec9ossmu/) kullanarak doğruladım (spec-stats atm için Firefox gerektiriyor). Belirsiz olduğunu anladığın için teşekkürler. – jib