BLOOK

GP's blog and book

网络电视.ts视频格式+ffmpeg用法

我做网络电视广告上传后台,视频格式是ts,需要在web预览。方法是由后端转成m3u8格式,返回文件路径,前端来播放。
safari默认支持m3u8.
chrome 用这个播放 http://videojs.github.io/videojs-contrib-hls/
在html里长这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>video</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>
<video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268"
data-setup='{}'>
<source src="https://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8" type="application/x-mpegURL">
</video>
</body>
</html>

用node起个本地服务,然后访问就成功了。

1
2
3
4
5
6
var express = require('express');
var app = express();
app.use(express.static(__dirname ));
app.listen(4004);

把本地的文件转成可供浏览器直接播放的视频格式用以下代码

1
ffmpeg -i 文件名 -acodec aac -vcodec libx264 -r 23 -f mp4 导出文件名