使用Node Fluent-FFMPEG流式传输MP4视频



我正在尝试使用节点fluent-ffmpeg,expressejs创建视频流服务器和客户端。而且已经有一段时间没有解决这个问题了。我想做的是在特定时间开始播放视频。以下代码使它在Windows上使用Safari浏览器,但对于其他代码,它会循环几秒钟或说

不支持视频格式

服务器代码(运行.js):

app.get('/video', function(req, res) {
  //define file path,time to seek the beegining and set ffmpeg binary
  var pathToMovie = '../videos/test.mp4';
  var seektime = 100; 
  proc.setFfmpegPath(__dirname + "/ffmpeg/ffmpeg");

  //encoding the video source
  var proc = new ffmpeg({source: pathToMovie})
         .seekInput(seektime)
         .withVideoBitrate(1024)
         .withVideoCodec('libx264')
         .withAspect('16:9')
         .withFps(24)
         .withAudioBitrate('128k')
         .withAudioCodec('libfaac')
         .toFormat('mp4');
  //pipe 
         .pipe(res, {end: true});
});

客户端代码 (index.ejs):

<html>
  <head></head>
  <body>
    <video>
      <source src="video/" type='video/mp4' />
    </video>
  </body>
</html>

请帮忙。我到处搜索解决方案,但没有找到

我相信为了

在 mp4 或 mp3 中搜索,您需要让浏览器知道该内容的长度。 尝试在拨打ffmpeg电话之前插入此快速简介。 这应该获取视频文件的大小,您可以在流式传输数据之前相应地设置响应中的标头。

在 FFMPEG 调用之前插入

var fs = require('fs');
var stat = fs.statSync(pathToMovie);
res.writeHead(200, {
    'Content-Type': 'video/mp4',
    'Content-Length': stat.size
});

相关内容

  • 没有找到相关文章

最新更新