如何在 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 块?