0

Я работаю над приложением, которое отображает видео с Nodejs & MongoDB server.Nodejs, Android - Потоковое видео

Проблема заключается в том, что видео не потоковая передача, MediaPlayer на Android полностью загружает видео, а затем отображает его, и это происходит очень медленно, как вы можете догадаться.

Я не являюсь носителем языка, поэтому чтение документов в основном трудно понять для меня.

Какой путь я должен идти? RTSP или HTTP. Любые советы, как я могу достичь своей цели?

Вся ваша помощь приветствуется, с наилучшими пожеланиями.

+1

@SebastianЭтот вопрос очень плохо подходит для программистов - он будет быстро проголосовать и закрыт там, см. Http://meta.programmers.stackexchange.com/questions/6483/why-was-my-question - закрыто или проголосовано/6490 # 6490 Рекомендуемое чтение: ** [Что происходит с Programmers.SE? Руководство по переполнению стека] (http://meta.programmers.stackexchange.com/q/7182/31260) ** – gnat

+0

@gnat, какой сайт вы рекомендуете вместо этого? ОП задал вопрос о техническом подходе/архитектуре для своей проблемы. –

+1

@SebastianRoth нигде в Stack Exchange я боюсь. [«Мы уже пытались поддержать эти вопросы, мы даже предоставили им свой сайт. К сожалению, это не сработало ...»] (http://meta.stackexchange.com/a/200144/165773) – gnat

ответ

1

Хотя выделенные потоковые серверы, вероятно, являются лучшим решением для любого крупного решения или любого решения, требующего высокой производительности, вы определенно должны иметь возможность передавать видеофайлы из стандартного приложения node.js.

Самый простой способ разместить видео в каталоге где-то на сервере и обслуживать их как статический контент.

Следующий базовый узел, приложение js будет обслуживать видео - вы получаете доступ к нему с вашего базового url, за которым следует имя каталога и видеофайла - например. http://[your сервер URL]/видео/[имя вашего видеофайла]

var express = require('express'); 
var fs = require('fs'); 
var morgan = require('morgan'); 

//Define the app 
var app = express(); 

// create a write stream (in append mode) 
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'}); 

// setup the logger 
app.use(morgan('combined', {stream: accessLogStream})); 

// Constants 
var PORT = 3000; 

//Use static middleware to serve static content - using absolute paths here (you may want something different) 
app.use('/videos', express.static('/videos')); 

//Add error handling 
app.use(function(err, req, res, next) { 
    console.log("error!!!"); 
    console.log(err.stack); 
}); 

// Video Server test page 
app.get('/', function (req, res) { 
    console.log("In Get!!!"); 
    res.send('Hello world from Video server\n'); 
}); 

//Start web server 
var server = app.listen(PORT, function() { 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log('Example app listening at http://%s:%s', host, port); 
}); 

Одна из причин, почему простой HTTP потокового не может работать для вас, если ваш сервер не поддерживает запрос диапазона. Этот механизм позволяет клиенту запрашивать только часть файла за раз. Смотрите здесь для получения дополнительной информации:

+0

I полностью проверит это, спасибо –

0

Вы не дали подробную информацию о приложении. RTSP или HLS представляют собой потоковые форматы, имеющие некоторые преимущества по сравнению с другими в соответствии с требованиями, а Android поддерживает и то, и другое.