centos stream安装ffmpeg实现dash流媒体播放视频
·
起初有个大视频文件想传给朋友看传起来太慢,想起来手里有云服务器就想着部署到服务器上给他们看,考虑到文件较大直接播放需要下载完成才能播放肯定不行,就想到了流媒体处理下。
流媒体有两个作用一来实现边下边播的功能,二来是能够自适应网络实现不通码率。你可以考虑使用流媒体服务器软件。
在CentOS Stream上实现流媒体,我们选择DASH(Dynamic Adaptive Streaming over HTTP)。
DASH需要安装ffmpeg,可以在线安装或者手动安装,这里是手动安装:
-
下载ffmpeg的预编译二进制文件:
sudo curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz -
解压并安装:
tar -xvf ffmpeg-release-amd64-static.tar.xz sudo mv ffmpeg-*-static/ffmpeg /usr/local/bin/ sudo mv ffmpeg-*-static/ffprobe /usr/local/bin/ -
验证:
会看到一堆版本信息:ffmpeg -version
配置Nginx
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf)
server {
listen 6688;
listen [::]:6688;
server_name 47.99.134.xxx;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location / {
# 注意这里路径我们都是放到data下面
root /data/;
index index.html;
add_header 'Access-Control-Allow-Origin' '*';
# 设置缓存一天有效期
add_header 'Cache-Control' 'public, max-age=86400';
# 如果需要处理跨域请求
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
处理mp4视频
不要用sudo ffmpeg命令会提示找不到命令,这里使用了 -avoid_negative_ts make_zero 参数来调整时间戳,避免负值或异常值。
ffmpeg -i nz.mp4 -c:v libx264 -c:a aac -avoid_negative_ts make_zero -f dash nz.mpd
注意这里我的轻量云服务器执行很慢,我选择在windows安装执行转换后上传云服务器的/data下面,具体windows安装参考我windows10环境安装ffmpeg文章
设置nginx主页得index文件
<!DOCTYPE html>
<html>
<head>
<title>DASH Video Player</title>
<!-- 更改为本地路径 -->
<script src="/dash.all.min.js"></script>
<style>
video {
width: 640px;
height: 360px;
}
</style>
</head>
<body>
<h1>DASH Video Player</h1>
<video id="videoPlayer" controls></video>
<script>
(function() {
var url = "http://47.99.134.xxx:6688/nz.mpd"; // 替换为你的DASH MPD URL
var player = dashjs.MediaPlayer().create();
player.initialize(document.querySelector("#videoPlayer"), url, true);
})();
</script>
</body>
</html>
注意这里的dash.all.min.js是以本地形式加载的不走cdn了,具体下载地址dash js开源项目git地址,如下图

下载完成后解压找到dash.all.min.js文件和index两个文件都放到/data目录下,重启nginx就可以通过http://47.99.134.xxx:6688/index.html查看视频并支持边下边播了。
更多推荐
所有评论(0)