Chrome android 视频元素无法从 mediaRecorder blob 数据播放 url

Chrome on android video element unable to play from mediaRecorder blob data url

前言

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

问题

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

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

我发现此文档指出 android 上的 chrome 中存在错误。 Chrome Bug Report

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

问题

有没有人找到在 android 上使用 google chrome 播放视频元素中录制的媒体的解决方法?

已测试但失败的解决方案

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

<video src="[example blob url]>

测试 2:使用 blob window 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 就是答案。它有效,但视频在点击之前不会自动播放。我正在视频元素中播放录制的媒体。

由于我的代表无法发表评论,但我想你现在想发表评论。很快就会修复,请参阅 chrome bug report

感谢分享您的测试 3,拯救了我!