[html] H5如何播放ts流?

haizhilin2013
2023-01-01 04:33:25 星期日
html
                    
                        
H5如何播放ts流?
Comments per page
< Page 1 / 1 >
ShihHsing 2023-03-27 03:24:58

H5中如何播放视频资源

在H5中,可以使用 <video> 标签来播放视频资源。<video> 标签是HTML5中新增的标签,它提供了一种简单、便捷的方式来在网页上嵌入视频。下面是一个简单的示例:

<video src="video.mp4" controls></video>

其中,src 属性指定了视频资源的 URLcontrols 属性会在视频下方显示播放/暂停、音量、全屏等控制按钮。

此外,还可以使用JavaScript来控制视频的播放。例如,可以使用 play() 方法来开始播放视频,使用 pause() 方法来暂停视频:

const video = document.querySelector('video');
video.play();  // 开始播放视频
video.pause(); // 暂停视频

还可以监听 playpauseended 等事件来实现对视频播放状态的监控和控制:

const video = document.querySelector('video');

video.addEventListener('play', function() {
  console.log('视频开始播放');
});

video.addEventListener('pause', function() {
  console.log('视频暂停');
});

video.addEventListener('ended', function() {
  console.log('视频播放结束');
});

需要注意的是,不同的浏览器支持的视频格式不同。一般来说,常用的视频格式有 MP4WebMOgg 等。可以通过添加多个 <source> 标签来指定多个不同格式的视频文件,浏览器会自动选择支持的格式进行播放:

<video controls>
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  <source src="video.ogg" type="video/ogg">
</video>

播放TS流

在 HTML5 中播放 TS 流,需要使用 MSE(Media Source Extensions)技术。MSE 是一个 JavaScript API,可以让我们通过 JavaScript 创建和控制媒体源。MSE API 使得我们可以通过 JavaScript 控制流媒体内容的加载和播放。以下是使用 MSE 播放 TS 流的步骤:

  1. 创建 video 元素
<video id="video-player"></video>
  1. 创建 MediaSource 对象
const mediaSource = new MediaSource();
  1. video 元素设置 src 属性,src 属性为 URL.createObjectURL(mediaSource)
const videoPlayer = document.getElementById('video-player');
videoPlayer.src = URL.createObjectURL(mediaSource);
  1. 添加 sourceBufferMediaSource
const sourceBuffer = mediaSource.addSourceBuffer('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');
  1. 获取 TS 流,分别添加到 sourceBuffer
fetch('your-ts-stream-url')
  .then(response => response.arrayBuffer())
  .then(arrayBuffer => {
    sourceBuffer.appendBuffer(arrayBuffer);
  });
  1. 注册 sourceBuffer 的更新事件,当 sourceBuffer 更新时,调用 sourceBufferappendBuffer 方法,将新的 TS 分片添加到 sourceBuffer
sourceBuffer.addEventListener('updateend', function() {
  if (!sourceBuffer.updating && !mediaSource.updating) {
    fetch('your-ts-stream-url')
      .then(response => response.arrayBuffer())
      .then(arrayBuffer => {
        sourceBuffer.appendBuffer(arrayBuffer);
      });
  }
});
  1. 播放视频
videoPlayer.play();

注意:不同的视频编码格式需要设置不同的 codecs 值。在步骤 4 中,可以通过 MIME 类型和 codecs 值来指定视频编码格式,以便让浏览器正确地解码和播放视频。

排行榜
今日答题答题排行
    未答的题
    更多>
      【关注作者公众号】 以面试驱动学习--前端剑解
      【公众号推荐】 不折腾的前端和咸鱼有什么区别

      学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布前端知识点(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!欢迎大家关注3+1开源项目!希望大家每人去学习与思考!(不要为了谁而来,要为自己而努力!

      【关注官方公众号】 每天4:30-5:00推送
      【公众号推荐】 一起折腾前端算法
      【微信学习群】 备注3+1