Kai*_*ack 9 javascript php ogg
我在浏览器中使用 Javascript 向我的用户提供录音:
navigator.mediaDevices.getUserMedia(media.gUM).then(_stream =>
{
stream = _stream;
recorder = new MediaRecorder(stream);
recorder.ondataavailable = e =>
{
// push data to chunks
chunks.push(e.data);
// recording has been stopped
if(recorder.state == 'inactive')
{
blob = new Blob(chunks, {type: media.type });
blob_url = URL.createObjectURL(blob);
$('.rec_result_audio').attr({
'src': blob_url
});
// send data to server
// append file to object to be sent
var filedata = new FormData();
filedata.append('recfile', blob, blob_url);
// send by AJAX/POST
}
};
}
Run Code Online (Sandbox Code Playgroud)
在 PHP 中,我像这样获取并存储流:
if(!empty($_FILES))
{
$filename = $_FILES['recfile']['name'];
$file_locationtmp = $_FILES['recfile']['tmp_name'];
$filetype = $_FILES['recfile']['type'];
$filesize_bytes = $_FILES['recfile']['size'];
// add file extension to string
$_FILES['recfile']['name'] = $_FILES['recfile']['name'].'.ogg';
// save to filesystem
}
Run Code Online (Sandbox Code Playgroud)
现在 OGG 文件(带有 opus 编解码器的 webm)存储在服务器上。但是,所有元数据都丢失了。因此播放栏不起作用。有关更多信息,请参见此处:HTML5 音频 - 进度条/播放栏不适用于 OGG 音频文件/206 部分内容问题
Length不见了。还有Bit rate,Channels和Audio sample rate。
显然用PHP直接保存到文件系统是不够的。
PHP 代码中缺少什么,以便稍后将该文件识别为 OGG 文件?
我是否必须添加元数据,如果是,如何添加?
最简单的解决方案是下载已编译的 ffmpeg 二进制文件并将脚本指向它。在 FFmpeg 下载页面上,请参阅获取软件包部分,获取适用于 Linux、Windows 和 macOS 的最新静态构建的链接。
您可以使用 shell_exec() (如 FFmpeg Wiki: PHP 中所示)并提供下载的二进制文件的完整路径。
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |