javascript - 如何只流式传输视频的一部分而不下载整个视频?
问题描述
我正在构建一个 YouTube 视频修剪器,目前,它需要 YouTube 视频 ID,从服务器下载整个视频(即使是 10 小时长),然后根据用户输入的时间范围使用ffmpeg
.
现在的问题是,即使我们想要一小部分,下载整个视频也需要很长时间,因此这是非常不切实际的。
当您向前寻找视频时,我正在考虑实现类似于 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
.
推荐阅读
- powerbi - 在 Power BI 中使用日期而不是聚合值创建数据透视表?
- jquery - 如何在单击时移动系列中元素的位置?
- javascript - 将滑块上的 onchange 函数反应到 html img
- python - 在单独的 csv 文件中对带有标签的标签数据集进行排序?
- powerbi - 在 Power Query 中,如何将多个列中的值替换为另一个表中的值?
- python - 尝试积分时指数函数溢出
- python - matplotlib 中的 cmap 独立为每个条着色
- php - 在 laravel 分页集合中发送错误的对象
- c# - 离线将销售数据从 SQL 上传到 Google Analytics
- java - 如何解决书面许可问题