我正在为src
添加video source
base64值,但它不起作用
这是我的HTML
<video id="video" controls>
<source type="video/mp4" id="jh">
</video>
我的js是
$("#vd").click(function(){
$.ajax({
url:"RetriveVedio",
method: "get",
dataType: 'text',
success:function(response){
console.log(response);
var src = 'data:video/mp4;base64,'+response;
$("#video").find("#jh").attr("src", src);
// $('#video').load();
$("#video").trigger('load');
$("#video").trigger('play');
}
});
});
来自服务器的base64值为AAAAGGZ0eXBtcDQyAAAAAG1wNDFpc29tBNjldm1kYXQAAAAAAAAAEAA=
价值会像source
一样添加到<source type="video/mp4" id="jh" src="data:video/mp4;base64,AAAAGGZ0eXBtcDQyAAAAAG1wNDFpc29tBNjldm1kYXQAAAAAAAAAEAA=">
但视频没有播放。我无法追踪它,任何人都可以帮助我吗?
没有任何解决方案吗?
答案 0 :(得分:1)
&#34; ...但是视频没有播放。我无法追踪它,任何人都可以帮助我吗?&#34;
(1)你的字符串&#34; AAAAGGZ0eXBtcDQyAAAAAG1wNDFpc29tBNjldm1kYXQAAAAAAAAAEAA=
&#34;仅提供 41 个字节。这还不足以播放视频。
00 00 00 18 66 74 79 70 6D 70 34 32 00 00 00 00 ....ftypmp42....
6D 70 34 31 69 73 6F 6D 04 D8 E5 76 6D 64 61 74 mp41isom.Øåvmdat
00 00 00 00 00 00 00 10 00 .........
(2)你的字节以 mdat 开头(这是一个混合在一个组中的/ v数据),解码器需要 moov 文件的一部分(其中包含元数据)知道在所有混合 mdat 部分中frame1字节的开始/结束位置。最好首先使用 moov 制作MP4文件,然后再使用 mdat 。
使用关键字在线查找修复工具:fast start MP4 moov at front
(3)因为 mdat 是第一个,我们可以看到它的大小为字节:04 D8 E5 76
(这意味着81.3 MB)。因此,在开始使用解码器元数据之前,您必须接收大约81兆。
解码器在显示任何内容或解码声音之前需要元数据(存储在 moov 部分,此 mdat 的81分之后)。
答案 1 :(得分:1)
是的,我的回复没有被正确编码到base64值中,它是短的而无效的
答案 2 :(得分:0)
我最近遇到了这个问题,我的解决方案是将src
属性直接添加到<video>
元素上。像
<video src="-base64 string here-" width="xx" height="yy">
Your browser does not support HTML5 video.
</video>
在src
元素中添加<source>
导致视频不执行任何操作。