首页 > 解决方案 > 如何只流式传输视频的一部分而不下载整个视频?

问题描述

我正在构建一个 YouTube 视频修剪器,目前,它需要 YouTube 视频 ID,从服务器下载整个视频(即使是 10 小时长),然后根据用户输入的时间范围使用ffmpeg.

在此处输入图像描述

现在的问题是,即使我们想要一小部分,下载整个视频也需要很长时间,因此这是非常不切实际的。

当您向前寻找视频时,我正在考虑实现类似于 HTML5 视频播放器的功能。它只是跳转到您搜索的部分,而不下载您跳过的部分。如何仅以缓冲区的形式从服务器下载视频文件的一部分,然后从中生成已经修剪过的视频文件?我不知道这在服务器端是否可行,但视频播放器在客户端可以做到。

标签: javascriptnode.jsffmpeghtml5-videofs

解决方案


对于任何想知道如何解决的人,我通过使用ffmpeg下载并转换视频而不是手动下载然后使用转换来解决它ffmpeg

我以前在做什么:

ffmpeg -i ${downloadedVideo} -ss ${startTrimmingAt} -t ${trimDuration} -async 1 ${destinationPath}

我将其切换为:

ffmpeg -i ${videoURL} -ss ${startTrimmingAt} -t ${trimDuration} -async 1 ${destinationPath}

我基本上停止手动下载视频,而是将视频 URL 作为ffmpeg.


推荐阅读