2016-06-30 3 views
-2

У меня есть веб-приложение, ориентированное на воспроизведение видео. Он использует флягу api для обслуживания метаданных. Я хочу иметь возможность передать локальный путь к файлу клиенту и разрешить клиенту воспроизводить это видео. Поскольку вы не можете просто загружать локальный файл, как я могу служить файлу в браузере? Я знаю, что есть simplehttpserver, но у меня есть файлы повсюду.Слушать локальные видеофайлы для vlc-plugin с python

Как я могу настроить его, чтобы использовать плагин vlc, как в этом сообщении Open video stream on VLC Player through the browser?

UPDATE

Это не дубликат. Я спрашиваю, как я могу обслуживать файл из файла-файла, указанного клиентом. Это может быть любое местоположение, а не только один каталог статических файлов css/html/js, которые я хочу обслуживать. Поскольку клиент получает путь к файлу с сервера, я могу подтвердить, что этот файл разрешен для обслуживания.

UPDATE 2

До сих пор не верю, что это дубликат, как это для потребления конкретного плагина, vlc web plugin. Я пытался использовать send_from_directory, но это не сработало. Надеюсь, это станет более ясным. Если send_from_directory` правильно использовать, то какая у меня ошибка?

На питоне моя конечная точка выглядит следующим образом (с использованием колбы-успокоительной):

from flask import Blueprint, send_from_directory 
from flask_restful import Api, Resource 

class VideoServer(Resource): 

    def get(self, filepath): 
     path, file = os.path.split(filepath) 
     return send_from_directory(path, file) 

base_blueprint.add_resource(VideoServer, '/video_server/<string:filepath') 

На стороне ЯШ:

let videourl = config.api_server + '/video_server/' + filepath 
let $video = $("<object>", {type: "application/x-vlc-plugin", data: videourl}); 
let $param = $("<param>", {name: "movie", value: videourl}); 
let $embed = $("<embed>", {type: "application/x-vlc-plugin", autoplay: "yes", loop: "no", target: videourl}); 
$video.append($param); 
$video.append($embed); 
$("#mydiv").append($video); 
$("#mydiv").load(); 
+1

'send_from_directory' - это то, что вы хотите, точно так же, как дублированный вопрос. – dirn

+0

Это * * * дубликат. Прочтите ответы по связанному вопросу. – davidism

+0

Я обновил сообщение с кодом, в том числе пытаюсь использовать 'send_from_directory' – postelrich

ответ

0

Для такого рода задач я рекомендую реальный сервер (в отличие от python simplehttpserver или флеш-встроенного сервера dev).

Итак, возможно, nginx?

+0

Ну, проблема в том, что список видеофайлов является динамическим на основе пользовательского ввода, а реальный сервер имеет статическую конфигурацию. – postelrich

+0

вы можете иметь файлы nginx, обслуживающие файлы из папки , и создать символическую ссылку в этой папке для видеофайла динамически –

+0

я мог бы, но это не очень здорово, если я хочу распространять эту кросс-платформу приложения. Станет ли это головной болью, если у них уже есть nginx, работающий отдельно? – postelrich

Смежные вопросы