2015-12-02 10 views
12

के बाद काम नहीं करता है, मैं वर्तमान में अपने क्लाइंट (वर्तमान में क्रोम के रूप में क्रोम का उपयोग कर) के लिए socket.io के माध्यम से .webm वीडियो फ़ाइल स्ट्रीम करने का प्रयास कर रहा हूं।SourceBuffer में शामिल मीडियासोर्स पहली बार

जोड़ पहले Uint8Array SourceBuffer को ठीक काम करता है, लेकिन आगे लोगों को जोड़कर काम नहीं करता है और निम्न त्रुटि फेंकता है: Uncaught DOMException: Failed to execute 'appendBuffer' on 'SourceBuffer': The HTMLMediaElement.error attribute is not null.

मेरे वर्तमान कोड:

'use strict'; 

let socket = io.connect('http://localhost:1337'); 

let mediaSource = new MediaSource(); 
let video = document.getElementById("player"); 
let queue = []; 
let sourceBuffer; 

video.src = window.URL.createObjectURL(mediaSource); 

mediaSource.addEventListener('sourceopen', function() { 
    sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"'); 

    socket.on("video", function(data) { 
     let uIntArray = new Uint8Array(data); 

     if (!sourceBuffer.updating) { 
      sourceBuffer.appendBuffer(uIntArray); 
     } else { 
      queue.push(data); 
     } 
    }); 
}); 

सर्वर साइड कोड (स्निपेट)

io.on('connection', function(socket) { 
      console.log("Client connected"); 

      let readStream = fs.createReadStream("bunny.webm"); 
      readStream.addListener('data', function(data) { 
       socket.emit('video', data); 
      }); 
     }); 

मैंने वेबकिट चेक भी हटा दिए क्योंकि यह केवल तभी होगा क्रोमियम ब्राउज़र पर चलाएं।

+0

क्या आप अपना सर्वर कोड भी पोस्ट कर सकते हैं? यह – cviejo

+0

सुनिश्चित करने और परीक्षण करने में आसान बना देगा, मैंने सोचा था कि सर्वर कोड अनावश्यक है क्योंकि यह मेरे लिए क्लाइंट त्रुटि जैसा दिखता है लेकिन आप सही हैं कि यह मदद कर सकता है। – Cludch

+0

मेरे अंत में कोई त्रुटि नहीं। यह फ़ाइल के साथ ही एक समस्या हो सकती है। चूंकि आप "bunny.webm" फ़ाइल का उपयोग कर रहे हैं और [यह पोस्ट] (http://stackoverflow.com/questions/27309027/stream-video-through-socket-to-html5-video-tag) में एक समान समस्या है http://www.webmfiles.org/demo-files से डाउनलोड की गई फ़ाइलें ... क्या आपने पहले ही फ़ाइल या दूसरी फ़ाइल को फिर से स्वरूपित करने का प्रयास किया था? – cviejo

उत्तर

2

मुझे लगता है कि आप, बफर मुक्त करने के लिए निकालें() फ़ंक्शन http://w3c.github.io/media-source/#widl-SourceBuffer-remove-void-double-start-unrestricted-double-end

मुझे पता है अगर यह मदद की चलो देखते है।

+0

मैंने पहले एपेंड बफर के बाद इस विधि को कॉल करने का प्रयास किया लेकिन मुझे 'अवैध एक्सेसर त्रुटि' त्रुटि मिल रही है क्योंकि 'mediaSource.duration'' NaN' है - https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer/ – Cludch

+0

हटाएं मुझे लगता है कि आपको इस अवधि को स्वयं सेट करना पड़ सकता है: https://developer.mozilla.org/en-US/docs/Web/API/MediaSource/duration –

+0

मुझे निकालना कब कॉल करना चाहिए? मैंने इसे कंसोल के माध्यम से बुलाया लेकिन अभी भी एक नया हिस्सा नहीं जोड़ सका। – Cludch

संबंधित मुद्दे