Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中创建具有特定mime类型的新blob?_Php_Video_Webm_Recordrtc - Fatal编程技术网

如何在PHP中创建具有特定mime类型的新blob?

如何在PHP中创建具有特定mime类型的新blob?,php,video,webm,recordrtc,Php,Video,Webm,Recordrtc,我正在使用RecordRTC以1000ms的块记录视频,这些块通过AJAX以blob的形式发送到我的服务器。服务器保存这些文件,在录制结束时,我需要将它们全部重建为一个.webm 我认为这就像连接文件并给它正确的扩展名一样简单。不幸的是没有 下面是我构建最终文件的代码。这是在拉雷维尔,但它是相当不言自明的: public function buildBlob(Request $request) { $files = Storage::disk('local')->files('bl

我正在使用RecordRTC以1000ms的块记录视频,这些块通过AJAX以blob的形式发送到我的服务器。服务器保存这些文件,在录制结束时,我需要将它们全部重建为一个
.webm

我认为这就像连接文件并给它正确的扩展名一样简单。不幸的是没有

下面是我构建最终文件的代码。这是在拉雷维尔,但它是相当不言自明的:

public function buildBlob(Request $request)
{
    $files = Storage::disk('local')->files('blobs');
    $contents = '';

    foreach($files as $file) {
        $contents.= file_get_contents(storage_path('app/'. $file));
    }

    Storage::put('video.webm', $contents);

    return ['success' => true];
}
VLC不会播放此文件。Firefox抱怨它是一个未知的文件类型。Chrome根本就不玩它

我想我的问题是:如何用正确的mimetype在PHP中编译一个新的blob?在JavaScript中,我可以做到:

let blob = new File(this.blobs, 'video.webm', {
    type: 'video/webm'
});

所以我想我需要一个等效的。

“以1000毫秒的块记录视频,通过AJAX以水滴的形式发送”-这些可能都是完整的小1s长视频…?如果它们包含所有必要的额外标题/元数据,使它们能够自己播放,那么您可能必须开始在服务器端重新编码它们,以再次获得完整的、可播放的组合长度视频。它们是blob,而不是完整的视频。不幸的是,没有mime类型与它们关联,它们无法单独播放。您如何保证文件的正确顺序?它们在上传之前用JavaScript进行了适当命名
video-001.web
video-002.webm
etcAnd
Storage::disk('local')->文件('blob')
保证按这些文件名对它们进行排序?