使用python为vlc-plugin提供本地视频文件

时间:2016-06-30 03:05:22

标签: javascript python flask video-streaming vlc

我有一个专注于播放视频的网络应用程序。它使用flask api来提供元数据。我希望能够将视频的本地文件路径传递给客户端,并允许客户端播放该视频。由于您无法加载本地文件,如何将文件提供给浏览器?我知道有simplehttpserver,但我到处都有文件。

如何进行设置,以便我可以像Open video stream on VLC Player through the browser这篇文章一样使用vlc插件?

更新

这不重复。我问如何从客户端提供的文件路径提供文件。这可以是任何位置,而不仅仅是我希望提供的静态css / html / js文件的一个目录。由于客户端从服务器获取文件路径,我可以验证是否允许提供该文件。

更新2

仍然不相信这是重复的,因为它是由特定插件vlc web plugin消费的。我尝试使用send_from_directory但它没有用。希望这更清楚。如果send_from_directory`是正确的用法,那么我的错误是什么?

在python上我的端点如下(使用flask-restful):

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')   

在js方面:

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 个答案:

答案 0 :(得分:0)

对于这种任务,我推荐一个真正的服务器(与python simplehttpserver或flask嵌入式开发服务器相反)。

那么,也许是nginx?