在php中将上传的视频拼接成1mb块

Posted

技术标签:

【中文标题】在php中将上传的视频拼接成1mb块【英文标题】:splice uploaded video into 1mb chunks in php 【发布时间】:2017-05-03 00:43:29 【问题描述】:

假设用户刚刚通过名为video 的表单输入上传了一个名为video.mp410mb MP4 视频。

是否可以将视频“拼接”成 10 个 1mb 的块,或者是否有任何可用的库可以做到这一点?

这样,当一个视频被选择加载到<video>标签内时,它将首先使用这些视频块中的第一个播放,然后在另一个正在播放的同时加载其余的视频并将它们堆叠在每个剪辑的结尾。

我知道这似乎是一个相当广泛的问题,但我似乎找不到任何其他类似的帖子(或任何其他解决方案)。

谢谢。

【问题讨论】:

【参考方案1】:

只要您的服务器支持范围请求,您就不需要这样做:

https://en.wikipedia.org/wiki/Byte_serving

这将允许客户端(即浏览器)一次从服务器请求文件的块,并在它有足够的时间开始播放视频。

如果您关心用户体验,那么您可能希望更进一步,支持多种比特率和支持比特率变化的流协议,例如 HLS 或 MPEG-DASH。这将允许根据网络条件保留不同质量的视频块。

此时,您通常最好使用专用的视频服务器或视频托管服务,因为该功能相对复杂且专业,而且通常比自己重新创建更容易。存在开源流媒体服务器,例如:

https://gstreamer.freedesktop.org http://www.videolan.org/vlc/streaming.html

【讨论】:

【参考方案2】:

您可以使用https://github.com/php-FFMpeg/PHP-FFMpeg,它非常成熟且有据可查。

在您的情况下,您感兴趣的是剪辑方法:

$video->filters()->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), FFMpeg\Coordinate\TimeCode::fromSeconds(15));

【讨论】:

是的,我事先已经看过了。然而,这似乎有点不必要的麻烦。关于如何在 Windows 系统上安装的任何想法?或者,任何其他原始替代品?谢谢:) 怎么这么麻烦?它完成了它应该做的事情,它简化了在 php 中处理视频的工作,而无需使用 sys_pipe 命令直接使用 ffmpeg(或其他工具)。 不是一般的使用,只是安装。 :/ 我之前从未真正安装过 3rd 方库,所以有点混乱 学习的好时机,我想说,这并不难,并且有文档可以帮助您。 绝对! :) 你能把我链接到一个吗?

以上是关于在php中将上传的视频拼接成1mb块的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中将视频上传到 YouTube?

如何在Android中将视频上传到youtube?

YouTube API 截断视频 [PHP]

在相机拍摄期间分割视频以提高上传效率

Python 多个视频拼接成一个视频工具(附代码) | Python工具

基于 IJKPlayer-concat 协议的视频无缝拼接技术实现