假设用户刚刚通过名称为video.mp4
的表单输入上传了名为video
的 10mb MP4 视频。
是否有可能"拼接"将视频分成10个1mb的块,或者是否有任何可用的库?
这样,当选择一个视频加载到<video>
标签内时,它会首先播放这些视频块中的第一个,然后在另一个播放时加载其余视频并基本上将它们叠加起来在每个剪辑的末尾。
我知道这似乎是一个非常广泛的问题,但我似乎无法找到与此相似的任何其他帖子(或任何其他解决方案)。
感谢。
答案 0 :(得分:0)
您可以使用非常成熟并且记录良好的https://github.com/PHP-FFMpeg/PHP-FFMpeg。
在您的情况下,您感兴趣的是剪辑方法:
$video->filters()->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), FFMpeg\Coordinate\TimeCode::fromSeconds(15));
答案 1 :(得分:0)
只要您的服务器支持范围请求,您就不应该真的需要这样做:
这将允许客户端(即浏览器)一次从服务器请求文件的块,并在它足以为视频加注时立即开始播放。
如果您担心用户体验,那么您可能希望更进一步,支持多比特率和支持比特率变化的流协议,如HLS或MPEG-DASH。这将允许根据网络条件存活不同质量的视频块。
此时,您通常最好使用专用的视频服务器或视频托管服务,因为功能相对复杂且专业,并且通常比自己重新创建它更容易。存在开源流服务器,例如: