javascript - Android 视频元素上的 Chrome 无法从 mediaRecorder blob 数据 url 播放

标签 javascript android google-chrome video mediarecorder

前言

我正在使用 webRTC mediaRecorder api 在移动网络应用程序上录制视频。视频数据正在录制中,可以在设备上的视频播放器应用程序中下载和播放。

问题

问题是即使在最新版本的 chrome 中,记录的数据 blob 数组也无法在移动设备上播放:

window.URL.createObjectURL(); or window.webkitURL.createObjectURL()

我发现这篇文档指出 android 上的 chrome 存在一个错误。 Chrome Bug Report

我确实从谷歌找到了一些文档,甚至突出显示了这里的错误: Google devs mediaRecorder docs

问题

有没有人找到在 Android 上使用谷歌浏览器在视频元素中播放录制媒体的解决方法?

经过测试但失败的解决方案

测试 1:使用 blob 窗口 url 作为视频元素上的 src

<video src="[example blob url]>

测试 2:使用 blob 窗口 url 作为视频元素的源

<video>
    <source type="video/webm" src="[example blob url]">

测试 3:使用 FileReader api 将 mediaRecorder blob 数组转换为 dataURI。

function getVideoDataUri(callBackFn) 
{ 
    var reader = new FileReader(); 
    var fileMime = 'video/webm'; 
    var blob = new Blob(this.blobs, {type: fileMime}); 
    reader.onload = function(e) 
    {  
        if(typeof callBackFn === 'function') 
        { 
            callBackFn(reader.result); 
        } 
    }; 
    reader.readAsDataURL(blob); 
} 

function callBack(dataUri) 
{ 
    /* do something with data */ 
    console.log(dataUri); 
} 

getVideoDataUri(callBack); 

最佳答案

看起来测试 3 就是答案。它有效,但视频在点击之前不会自动播放。我正在视频元素中播放录制的媒体。

关于javascript - Android 视频元素上的 Chrome 无法从 mediaRecorder blob 数据 url 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734612/

相关文章:

javascript - 3 选项 select set value from database remove onchange

javascript - 捕捉传单搜索事件

Android编辑文本对齐

c# - 使用 LimitedConcurrencyLevelTask​​Scheduler 时继续任务挂起

google-chrome - 为什么空的IndexedDB 仍然占用空间?

javascript - 折扣事件(onChange)Javascript 不起作用?

javascript - 在 Javascript 中将 RGB 数组转换为 RGBA 数组的快速方法

css - Phpstorm Live Edit 无法处理外部 css 和 js 文件

javascript - 无法与 Cordova 应用程序中的任何内容进行交互

android - 为 Android 创建类似 Chrome 的 UI