如何生成 webm 视频的初始化片段以与媒体源 API 一起使用
How to generate Initialization Segment of webm video to use with Media Source API
我正在构建一个小型应用程序,该应用程序使用MediaRecoder API将重新编码的视频从网络摄像头中分离出来,并将所有部分上传到服务器。
我看到使用媒体源 API,我需要播放第一部分,然后播放任何其他部分。
根据 http://www.w3.org/TR/media-source/#examples 我需要文件开头的"初始化段"。
如何在 JS 中生成 WebM 的"初始化段",以便我可以扮演我选择的任何部分。有没有库?(我对 WebM 字节流格式一无所知)
需要使用媒体源扩展
请参考以下示例
<script>
var appendID = "123";
function onOpen(e) {
var video = e.target;
var headers = GetStreamHeaders();
if (headers == null) {
// Error fetching headers. Signal end of stream with an error.
video.sourceEndOfStream(HTMLMediaElement.EOS_NETWORK_ERR);
}
video.sourceAddId(appendID, 'video/webm; codecs="vorbis,vp8"');
// Append the stream headers (i.e. WebM Header, Info, and Tracks elements)
video.sourceAppend(appendID, headers);
// Append some initial media data.
video.sourceAppend(appendID, GetNextCluster());
}
function onSeeking(e) {
var video = e.target;
// Abort current segment append.
video.sourceAbort(appendID);
// Notify the cluster loading code to start fetching data at the
// new playback position.
SeekToClusterAt(video.currentTime);
// Append clusters from the new playback position.
video.sourceAppend(appendID, GetNextCluster());
video.sourceAppend(appendID, GetNextCluster());
}
function onProgress(e) {
var video = e.target;
if (video.sourceState == video.SOURCE_ENDED)
return;
// If we have run out of stream data, then signal end of stream.
if (!HaveMoreClusters()) {
video.sourceEndOfStream(HTMLMediaElement.EOS_NO_ERROR);
return;
}
video.sourceAppend(appendID, GetNextCluster());
}
var video = document.getElementById('v');
video.addEventListener('sourceopen', onOpen);
video.addEventListener('seeking', onSeeking);
video.addEventListener('progress', onProgress);
</script>
<video id="v" autoplay> </video>
<script>
var video = document.getElementById('v');
video.src = video.mediaSourceURL;
</script>
相关文章:
- Google Feed API-返回媒体:缩略图
- 如何生成 webm 视频的初始化片段以与媒体源 API 一起使用
- 维基媒体API - 提取数据
- 415 使用 JQuery/FormData 和 Web API 的不受支持的媒体类型
- 媒体记录器 API 通过 Web 音频 API(不是音频元素)播放
- 使用媒体源扩展 API 时视频“卡住”
- 为什么其中一个侦听器适用于媒体 API 事件,而另一个则不适用于媒体 API 事件
- JavaScript:用于流媒体的简单 SoundCloud API 示例无法在 Safari 中正常工作
- 电话间隙媒体 API 暂停/恢复
- 维基媒体API从JSON字符串获取相关数据
- 如何停止在chrome中捕获由chrome.tabCaptureneneneba API启动的媒体流
- Metro JS API-获取当前媒体播放器曲目
- 媒体源api源缓冲区附加不起作用
- 网络音频API:当使用媒体流时,firefox中的FFT数据不同于chrome中的数据
- 使用Windows Phone 8.1的Twitter流媒体API
- Deezer API:检查当前用户是否有30秒的流媒体限制
- 邮件附件错误的媒体类型Gmail API
- 我正在使用Twitch API对特定的流媒体进行分类.代码太长了,有没有更短的方法
- Youtube媒体API无法正确加载
- 使用Json api下载谷歌存储媒体