如何仅流式传输视频的一部分而不下载整个内容?

问题描述

我正在构建一个YouTube视频修剪器,目前,它使用YouTube视频ID,从服务器下载整个视频(即使是10个小时之久),然后根据用户输入的时间使用{ {1}}。

enter image description here

现在的问题是,即使我们只希望下载一小段视频,也需要花费大量时间来下载整个视频,因此这是非常不切实际的。

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

解决方法

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

我以前在做什么:

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

我将其切换为:

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

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