Jak*_*rde 5 html5 html5-video webrtc
我正在创建一个基于Web的移动应用程序,应该可以在其中上传视频记录。有两种方法可以实现此目的:
使用输入:
<input type="file" name="video" accept="video/*" capture></input>
Run Code Online (Sandbox Code Playgroud)
使用RTC MediaRecorder:
var recordedBlobs = [];
function handleDataAvailable(event) {
if (event.data && event.data.size > 0) {
recordedBlobs.push(event.data);
}
}
var options = {
mimeType: 'video/webm',
audioBitsPerSecond : 128000,
videoBitsPerSecond : 2500000
}
mediaRecorder = new MediaRecorder(window.stream, options);
mediaRecorder.ondataavailable = handleDataAvailable;
mediaRecorder.start(10);
Run Code Online (Sandbox Code Playgroud)
尽管第一个选项始终有效,但主要问题是它使用内置的移动摄像头应用程序,使我们无法控制质量,这再次导致潜在的非常大的文件(尤其是在android上)
第二个版本使我们可以完全控制质量,并让os创建适度的文件大小,该大小在大小上可以接受,作为应用程序中的内容。iOS / Safari目前尚不支持此功能,但是可以这样做,因为默认情况下,iPhone从浏览器启动时会记录小文件。因此,当用户代理为iOS时,我可以激活选项1。
现在的问题:
如果我可以的话,第一种选择会很好:
选项2的问题在于仅支持.webm容器类型,而Safari不支持该类型。
因此,我有点停滞不前-现在看来,我唯一的选择是在上传时将传入的.webm文件转换为服务器上的.mp4文件。但这似乎是服务器上CPU成本很高的过程。
有什么好主意吗?
您可以将 H.264 录制到 webm 容器中。Chrome 支持此功能。
var options = {mimeType: 'video/webm;codecs=h264'};
media_recorder = new MediaRecorder(stream, options);
Run Code Online (Sandbox Code Playgroud)
尽管它是视频格式和容器的常见组合,但它是有效的。
现在,您可以将 H.264/webm 更改为 H.264/mp4,而无需使用 ffmepg(-vcodec copy)对视频流进行转码。
您还可以尝试使用 ffmpeg.js 在 JavaScript 中从 webm 重新包装到 mp4 客户端。
归档时间: |
|
查看次数: |
798 次 |
最近记录: |