खोज…


सर्वर से स्थिर फ़ाइलों को स्ट्रीम करने के लिए fs और पाइप का उपयोग करना

एक अच्छा वीओडी (वीडियो ऑन डिमांड) सेवा मूल बातें से शुरू होनी चाहिए। कहते हैं कि आपके पास अपने सर्वर पर एक निर्देशिका है जो सार्वजनिक रूप से सुलभ नहीं है, फिर भी किसी प्रकार के पोर्टल या भुगतान के माध्यम से आप उपयोगकर्ताओं को अपने मीडिया तक पहुंचने की अनुमति देना चाहते हैं।

var movie = path.resolve('./public/' + req.params.filename);

        fs.stat(movie, function (err, stats) {

            var range = req.headers.range;

            if (!range) {

                return res.sendStatus(416);

            }

            //Chunk logic here
            var positions = range.replace(/bytes=/, "").split("-");
            var start = parseInt(positions[0], 10);
            var total = stats.size;
            var end = positions[1] ? parseInt(positions[1], 10) : total - 1;
            var chunksize = (end - start) + 1;

            res.writeHead(206, {

                'Transfer-Encoding': 'chunked',

                "Content-Range": "bytes " + start + "-" + end + "/" + total,

                "Accept-Ranges": "bytes",

                "Content-Length": chunksize,

                "Content-Type": mime.lookup(req.params.filename)

            });

            var stream = fs.createReadStream(movie, { start: start, end: end, autoClose: true })

                .on('end', function () {

                    console.log('Stream Done');

                })

                .on("error", function (err) {

                    res.end(err);

                })

                .pipe(res, { end: true });

        });

उपरोक्त स्निपेट एक मूल रूपरेखा है कि आप अपने वीडियो को किसी ग्राहक को कैसे स्ट्रीम करना चाहते हैं। नेटवर्क ट्रैफ़िक और लेटेंसी सहित कई प्रकार के कारक, चंक लॉजिक निर्भर करता है। चक आकार बनाम मात्रा को संतुलित करना महत्वपूर्ण है।

अंत में, .pipe कॉल नोड। Js को सर्वर के साथ एक कनेक्शन को खुला रखने और आवश्यकतानुसार अतिरिक्त चंक्स भेजने की सुविधा देता है।

धाराप्रवाह ffmpeg का उपयोग कर स्ट्रीमिंग

आप .fl4 फ़ाइलों को .flv फ़ाइलों, या अन्य प्रकारों में बदलने के लिए flent-ffmpeg का भी उपयोग कर सकते हैं:

res.contentType ( 'flv');

    var pathToMovie = './public/' + req.params.filename;

    var proc = ffmpeg(pathToMovie)

        .preset('flashvideo')

        .on('end', function () {

            console.log('Stream Done');

        })

        .on('error', function (err) {

            console.log('an error happened: ' + err.message);

            res.send(err.message);

        })

        .pipe(res, { end: true }); 


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow