2015-08-31 10 views
10

Web sitesine video kayıt işlevi eklemek istiyorum. Her olası çözümü araştırıyorum ve deniyorum, ancak henüz hiçbir şey iyi çalışmıyor.
ben biz web kamerası ve mikrofon akışı alabilirsiniz WebRTC'yi kullanarak biliyorum çözüm enVideo ve ses kaydı yapın ve sunucuya yükleyin

  • WebRTC
    aşağıda çalıştık. Aynı konuda çok fazla makale buldum ama hiçbiri, bu akıştan blob çıkarıp nasıl kaydedileceğini veya sunucuya nasıl yükleneceğini açıklamadı. Ne var userMediaStream almak ve bunu kaydetmek veya sunucuya yükleyebilmek Bu nasıl akışından nesneyi ayıklamak için damla nesne URL'yi

    navigator.getUserMedia = navigator.getUserMedia || 
             navigator.webkitGetUserMedia || 
             navigator.mozGetUserMedia || 
             navigator.msGetUserMedia; 
    
    var video = document.querySelector('video'); 
    
    if (navigator.getUserMedia) { 
        navigator.getUserMedia({audio: true, video: true}, function(stream) { 
        video.src = window.URL.createObjectURL(stream); 
    }, errorCallback); 
    } else { 
        video.src = 'somevideo.webm'; // fallback. 
    } 
    

    oluşturarak tarayıcıda göstermek kadardır?

  • RecorRTC
    RecordRTC, Mauz Khan tarafından yazılmış olup aslında video/video kaydı için yazılmış bir kütüphanedir. amacıyla, krom olarak

    • altında iki Blob nesne Ses için bir ve Video için bir alıyorum bu bazı sorunlar var Ben video ve ses kayıt edebilmektedir duyuyorum Bu kütüphaneyi kullanarak Ama son dosya I üretmek için Bu dosyaları son video dosyasına birleştirmek gerekir. Dosyaları dosyalara dönüştürmek ve birleştirmek için FFMPEG kullanıyorum.
    • Sunucudaki dosyaları dönüştürmek için uzun zaman ayırsa da, kısa bir video ile iyi çalışıyor ancak Sorun uzun kayıt dosyalarıyla başlıyor. damla boyutu
    • MediaStreamRecorder
      Bu 10 MB

    belirli bir zaman aralığından sonra kaydedilen damla verir Mauz Khan başka kütüphanesidir aştığı zaman daha o 4 min kaydı için Array memory out of exception alma ve duyuyorum. Bunun, bellek istisna sorunumu çözeceğini düşündüm. Bu yüzden birleştirme aralığı üzerinde

    • Al damla yığın altında olarak uygulanan ve sonunda FFMPEG

    • kullanarak küçük bir video dosyasında sunucuya

    • dönüştürme damla yığın göndermeye tüm küçük FFMPEG tam video dosyasını kullanarak dosyayı son haline getirin

    • Küçük blob yığınının küçük video dosyasına kaydedilmesi, dosyanın baytının başlatılmasının başlamasıdır. Her küçük dosyasının süresini başlayan ve tamamlanan tamamlanan video içine tüm dosyanın birleştirilmesi sonra video uzun video için asılı her aradan sonra orada
    • Ayrıca
    • Video başlangıç ​​'trrrrrr' gürültü sesi asmak ve alır

Şimdi saf javascript WebRTC UserMedia API kullanarak video kaydetmeyi düşünüyorum ama şimdi gerçekten şok oldum çünkü How to record video with audio and upload to server açıklayan tek bir makale bile yok. Yukarıdaki örnekte her bir yazı veya cevap sadece gösterme kodu olarak get UserMedia and show stream in video tag gösterilmektedir. Bu konuda çok zaman harcıyorum. lütfen herhangi bir çözüm öner. Herhangi bir ücretli kütüphane veya hizmet varsa, aynı zamanda iyi olacaktır.

+0

Akış kaydetmenin yerel bir yolu yoktur. – Robert

+0

@Robert Tarayıcıdan, flaştan veya diğer teknolojilerden Video kaydı için alternatif bir yol var mı? Video kayıt fonksiyonunu uygulayan birçok web sitesini gördüm. Onlar nasıl? –

+0

Neden bunun neden düştüğünü anlamıyorum? Böylece tekrar soru soramayacağım! –

cevap

2

Bu cevabın geç geldiğini biliyorum, ancak şu anda bunu yapmak için standart bir biçim var: MediaRecorder, şu anda Chrome ve Firefox'ta destekleniyor.

İstemci tarafı işlevselliği için istediğiniz bir örnek var here. Daha sonra blobu alıp POST isteğinin bir parçası olarak sunucuya yükleyebilirsiniz. Bu şekilde, hala sunucuda kodlama yapabileceğiniz WebM'yi (ör. Ffmpeg kullanarak) alırsınız.

+0

blob MVC eylem C# içinde yayınlamak için bir örnek sağlayabilir misiniz? Ben farklı yollar denedim ama parametre her zaman null –

+0

Ben C# MVC hakkında hiçbir fikrim yok, ama JavaScript'te bir Blob POST gerekiyorsa, bkz. Https://stackoverflow.com/questions/13333378/how-can-javascript-upload -a-damla – geekonaut

İlgili konular