【问题标题】:Downloading a video using fluent-ffmpeg in nodejs and express在 nodejs 和 express 中使用 fluent-ffmpeg 下载视频
【发布时间】:2022-03-01 13:49:34
【问题描述】:

我正在做一个从 Reddit 下载视频的辅助项目,但它们将视频和音频分隔在不同的文件中。所以我必须先合并它们,然后再将它们下载到客户端。我能够在下面的 sn-p 代码中完成所有这些操作。

const ffmpeg = require("fluent-ffmpeg");
const proc = new ffmpeg();

app.post('/download', async (req, res) => {
   
   const audio = "some aduio link";
   const video = "some video link";

   proc.addInput(video)
     .output('${some path}./video.mp4')
     .format('mp4')
     .on("error", err => console.log(err))
     .on('end', () => console.log('Done'));

  if(audio) {
  proc.addInput(audio);
  }

  proc.run()
 
});

使用上面的代码,视频正在本地下载到指定路径的服务器中。

但我想在发送请求的客户端浏览器中下载视频。我试过了:

proc.pipe(res); 

但它不起作用,这是我第一次使用 ffmpeg ,所以如果有人给我提示会很好

【问题讨论】:

  • medium.com/developers-arena/… 展示了如何将数据从本地 fs(服务器)写入 http.response 结合你所拥有的,其中 ffmpeg 将 2 个输入混合到本地 fileSink。第 1 步和第 2 步将得到你需要的东西

标签: javascript node.js express ffmpeg video-streaming


【解决方案1】:

在流的末尾添加writeToStream(res, { end: true });

        const ffmpeg = require("fluent-ffmpeg");
        const proc = new ffmpeg();

        app.post('/download', async (req, res) => {
           
           const audio = "some aduio link";
           const video = "some video link";

           ffmpeg(video).format('mp4')
             .on("error", err => console.log(err))
             .on('end', () => console.log('Done')).writeToStream(res, { end: true });
         
        });

` 我希望它有效

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 2021-01-07
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2022-10-25
    • 2023-04-02
    • 2016-09-28
    • 2020-04-26
    相关资源
    最近更新 更多