【问题标题】:How to stream only a part of a video without downloading the whole thing?如何只流式传输视频的一部分而不下载整个视频?
【发布时间】:2020-08-13 17:54:09
【问题描述】:

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

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

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

【问题讨论】:

  • 建议:您可以使用<iframe>标签来展示YouTube视频(使用src=""),然后拥有所有工具。最后,一旦用户按下 Finish(或其他任何按钮),它将下载修剪后的视频,这将花费更短的时间。
  • 只是一个建议!

标签: javascript node.js ffmpeg html5-video fs


【解决方案1】:

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

我以前在做什么:

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

我把它改成:

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

我基本上停止手动下载视频,而是将视频 URL 作为输入提供给ffmpeg

【讨论】:

  • 我尝试这样做并监控网络使用情况。根据网络使用情况,它似乎仍在后台下载完整的视频。
猜你喜欢
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2014-08-25
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多