当前位置: 首页 > 面试题库 >

如何使用node.js流式播放.avi电影文件?(文件打开下载屏幕,而不是流式传输)

冀景明
2023-03-14
问题内容

我正在使用vid-streamer https://github.com/meloncholy/vid-
streamer

  1. 要安装,只需在您的电脑上创建一个文件夹
  2. 打开终端并做CD到文件夹
  3. 执行npm init
  4. 为应用命名,例如“ MyVidStreamer”
  5. 一个package.json将被创建
  6. npm安装快递
  7. 在package.json的同一文件夹上创建server.js
  8. 写下并保存
        var app = require("express");
    var app = app();
    var vidStreamer = require("vid-streamer");
    app.get("/videos/:type", vidStreamer); //{folder}/{videoName.extension}
    app.listen(3000);
  1. 更新vid-streamer配置:打开node_modules / vid-streamer / config /并编辑json文件vidStreamer-sample.json:
        {
    "mode": "development",
    "forceDownload": false,
    "random": false,
    "rootFolder": "",   <----
    "rootPath": "",  <-------
    "server": "VidStreamer.js/0.1.4",
    "maxAge": "3600",
    "throttle": false
    }
  1. 在我们server.js的同一级别上创建一个名为video的文件夹
  2. 在其中添加一个avi文件
  3. 在终端上使cd,然后是我们拥有server.js的文件夹的路径
  4. 运行节点server.js
  5. 打开浏览器,然后输入“ localhost:3000 / videos / {name_of_your_vid_File.extension}

我能够流mp4文件和ogg,但不能播放avi文件。 所以问题是我如何解决此问题以便流式传输avi文件


问题答案:

首先,您应该知道浏览器不是视频播放器,因此不能指望浏览器可以播放任何格式的视频!

此外,由于种种原因,并非所有视频格式都适合网络使用,因此,当您要流式传输视频时,请始终考虑这一点,并思考如何使视频适合网络使用,而不是如何使网络适合您的视频(例如您的问题;))。

最新的浏览器可本地支持一些视频格式,如MP4,WEBM和OGG将使用HTML5播放<video>元素的情况下的一种视频格式本身并不支持,浏览器将尝试与发挥它的插件像VLC
Web插件
,QuickTime,Osmozilla-
GPAC插件
,…,否则(没有合适的插件),浏览器将仅下载文件(或在询问用户后使用关联的应用程序打开文件)。

因此,为了“解决您的问题”,我认为您有2个选择:

  • 将您的视频转换为本地支持的格式。
  • 强迫用户为您的视频获取合适的插件,这在技术上是不可能的。

有关所有这些的更多信息,您可以查看以下链接:

  • Mozilla开发人员网络:HTML音频和视频元素支持的媒体格式。
  • Chromium项目:您需要了解Chromium中的音频/视频的所有信息。
  • 维基百科:HTML5视频。
  • caniuse.com:MPEG-4 / H.264视频格式(另请参阅底部的“资源”选项卡)。
  • caniuse.com:WebM视频格式(另请参阅底部的“资源”选项卡)。
  • caniuse.com:Ogg / Theora视频格式(另请参阅底部的“资源”选项卡)。
  • Microsoft开发人员网络:如何使用HTML5播放网页上的视频文件。
  • Dev.Opera:HTML5视频简介。

当然,在这里我只是想为您提供一个有关在浏览器中直接播放视频(不带HTML)的问题的简短“答案”,我认为在此之后,您一定会考虑在HTML页面中播放视频,也可以在上面的链接中找到答案。

希望所有可以帮助的人。



 类似资料:
  • 我正在使用ChromeWeb驱动程序2.10 chromedriver_win32。使用SeleniumWebDriver 2.31压缩。2. 启用详细日志记录后,似乎期望的能力(https://sites.google.com/a/chromium.org/chromedriver/capabilities)传递得很好, 但Chrome Web驱动程序正在播放*。mp4而不是下载。 我尝试过如何

  • 问题内容: 我想使用servlet将音频/视频文件流式传输到Web。 我尝试使用以下servlet: 以及以下HTML: 但是,播放器只是在加载…正在加载…正在加载… 这是怎么引起的,我该如何解决? 问题答案: 许多媒体播放器要求服务器支持所谓的HTTP范围请求。也就是说,它必须能够根据要求返回带有标头的媒体文件的特定部分。例如,在10MB长的文件中,只有位于精确索引1000的字节,直到2000为

  • 我的应用程序使用Google云存储来存储大文件,并使用Spring Boot作为后端。 我刚刚完成了负责下载的控制器的实现,遵循我认为可能是正确的方法,但是我从浏览器中得到的行为并不是我所期望的。 步骤 如果我尝试下载文件,将发生以下情况: 使用ReadChannel从google云存储读取文件(blob) 将通道写入ByteArrayOutputStream; 通道使用缓冲区写入 字节数组输出流

  • 问题内容: 我有一个200MB的文件,想通过下载提供给用户。但是,由于我们希望用户仅下载一次此文件,因此我们这样做: 强制下载。但是,这意味着整个文件必须加载到内存中,这通常不起作用。我们如何以每块kb的速度将文件流式传输给他们? 问题答案: 尝试这样的事情

  • 我正在尝试使用JME3X-JFX播放flv文件,我使用demo类,可以通过http url方法播放他们的文件。我还可以下载他们的flv并使用flv方法播放。但是我似乎不能播放我自己的flv文件(在使用一个网站如keepvid(尝试了几个)从youtube视频url(开放许可证)转换后下载)。 这听起来有点像这个问题,只有黑屏显示,但对我来说,视频声音播放。我尝试使用RichFLV编辑元数据,以类似

  • 问题内容: 我正在尝试设置一个非常基本的html5页面,该页面会加载20MB的.mp4视频。看来,浏览器需要下载整个内容,而不仅仅是播放视频的第一部分并在其余部分进行流传输。 我在搜索时发现的最接近的内容…我尝试了“手刹”和“数据回合”,两者均未发挥作用: 关于如何执行此操作或是否可行的任何想法? 这是我正在使用的代码: 问题答案: 确保moov(元数据)在mdat(音频/视频数据)之前。这也称为