如何在 Chrome 中播放 MPEG-TS

Posted

技术标签:

【中文标题】如何在 Chrome 中播放 MPEG-TS【英文标题】:How to play MPEG-TS in chrome 【发布时间】:2018-01-30 17:36:10 【问题描述】:

我有一个视频,我想在其中向用户展示('the' 用户,因为他可以访问 Chrome PC 或 Chrome android)。

如果可能的话,使用html5标签会很好,但由于它是TS,它不能......

所以,我需要一个更好的建议来说明如何播放它们,而不是打开 vlc 并复制并粘贴文件路径。 但这是个糟糕的主意……

我看到 this 库添加了 VLC 协议 ( vlc:// 链接 ),但我更喜欢使用服务器端解决方案。

我上传了一个示例文件,您可以在其中看到here。

我不想将所有文件都转换成另一种格式。

编辑: 如果将来有人来到这里,在接受@szatmary 的建议后,GitHub 上有一些项目会这样做,但是如果不进行部分转换(以某种方式),我就不能使用它们中的任何一个,而且因为我正在与非常大文件(10G+)和极弱的计算机(单 1.8 Cpu 核心)我设法只显示音频,不是真正的解决方案,但可以满足我的需求。

【问题讨论】:

【参考方案1】:

将文件转换为 mp4。如果 ts 文件是 h.264+aac,您可以在 javascript 中转换为 fmp4 并通过媒体源扩展程序播放,但要运行的代码很多。

【讨论】:

【参考方案2】:

你可以直接用索引m3u8文件播放ts,否则你可以制作m3u8文件,它只是ts文件的索引。

像edge这样的浏览器直接玩ts。参考this answer

<video   controls>
    <source src="index.m3u8" type="application/x-mpegURL">
</video>

对于其他浏览器,如 firefox 和 chrome,您需要将 ts 提供给带有 js 的视频,例如 video.js

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>videojs-contrib-hls embed</title>

  <link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
  <script src="https://unpkg.com/video.js/dist/video.js"></script>
  <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>

</head>
<body>
  <h1>Video.js Example Embed</h1>

  <video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto"   
  data-setup=''>
    <source src="index.m3u8" type="application/x-mpegURL">
  </video>

  <script>
  </script>

</body>
</html>

除了播放ts文件,您还可以将其转换为mp4。

可以使用pipe these ts files in to ffmpeg输出mp4文件。

cat *.ts | ffmpeg -i pipe: -c:a copy -c:v copy output.mp4

或者如果你的ts文件名没有顺序,

grep .*.ts index.m3u8 | xargs cat | ffmpeg -i pipe: -c:a copy -c:v copy output.mp4

【讨论】:

以上是关于如何在 Chrome 中播放 MPEG-TS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 FFMPEG 创建持续时间恒定的 m3u8 播放列表和 mpeg-ts 块?

将 GStreamer 管道编码并复用为 MPEG-TS

如何获取在 Chrome 标签中播放的音频名称

如何在 iOS 中的 HLS(m3u8) 播放期间找出当前的 TS 段?

如何在 Chrome 中安装 Flash 调试播放器?

如何在 service worker 中播放声音甚至在 chrome 中振动?