首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端接收所有.ts文件后自动删除.ts和.ts文件

客户端接收所有.ts文件后自动删除.ts和.ts文件
EN

Stack Overflow用户
提问于 2018-12-05 18:11:25
回答 2查看 3.7K关注 0票数 2

因此,我创建了一个快速服务器,它获取一个mp3文件(该文件现在存储在本地,但稍后将从mongo获取),并使用ffmpeg生成.m3u8和.ts文件。这些文件被成功地发送到客户端,并且在客户端上播放时没有错误。我使用hls.js在Chrome中播放这些文件。但是服务器仍然在本地存储这些文件。服务器是否可以知道何时删除本地存储的这些文件?有很多文件是由ffmpeg生成的,所以我不能让他们永远呆在那里。

我使用了hls-服务器github回购代码中的ffmpeg部分。

我的服务器文件

index.js

代码语言:javascript
复制
// just used to run ffmpeg for conversion
var command = ffmpeg('inp.mp3')
  .on('start', function (commandLine) {
    console.log('command', commandLine);
  }).addOptions([
    '-c:a aac',
    '-b:a 64k',
    '-vn',
    '-hls_list_size 0',
    '-segment_time 10',
  ]).output('files\\output.m3u8');

var express = require('express');
var app = express();
// express middleware to serve individual .ts and .m3u8 files when requested
app.use(express.static('./files/'));

app.get('/', function (req, res) {
  command.on('end', function () {
    console.log('done');
    res.write(`
    <script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
    <script>
      function onLevelLoaded (event, data) {
        var level_duration = data.details.totalduration;
        console.log(level_duration, data);
      }
      if(Hls.isSupported()) {
        var audio = new Audio();
        var hls = new Hls();
        // requesting files from here
        hls.loadSource('http://localhost:8000/output.m3u8');
        hls.attachMedia(audio);
        hls.on(Hls.Events.LEVEL_LOADED, onLevelLoaded);
        hls.on(Hls.Events.FRAG_BUFFERED, (e, d) => {
          console.log(e, d);
        });
      }
    </script>
    `);
    res.end();
  }).run();
});

app.listen(8000);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-11 05:11:52

您可以使用hls_delete_threshold

代码语言:javascript
复制
"-hls_time 10",
"-hls_list_size 3",
"-hls_delete_threshold 3", 
"-hls_flags delete_segments"

hls_delete_threshold size 在hls_flags delete_segments删除未引用段之前,设置要保留在磁盘上的未引用段数。增加此值以允许继续客户端下载最近在播放列表中引用的片段。默认值为1,这意味着将删除比hls_list_size+1更老的段。

票数 2
EN

Stack Overflow用户

发布于 2018-12-06 04:38:38

这就是我在我的ffmpeg过程中所做的工作:-hls_list_size 6 -hls_flags delete_segments

这就有效地卷起了它们。在创建新的时,它会自动删除最老的。

现在,我可能做错了什么,因为我保留了6个以上的文件,但它肯定是删除了其中的大多数文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53638341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档