起初有个大视频文件想传给朋友看传起来太慢,想起来手里有云服务器就想着部署到服务器上给他们看,考虑到文件较大直接播放需要下载完成才能播放肯定不行,就想到了流媒体处理下。

流媒体有两个作用一来实现边下边播的功能,二来是能够自适应网络实现不通码率。你可以考虑使用流媒体服务器软件。

在CentOS Stream上实现流媒体,我们选择DASH(Dynamic Adaptive Streaming over HTTP)。

DASH需要安装ffmpeg,可以在线安装或者手动安装,这里是手动安装:

  1. 下载ffmpeg的预编译二进制文件:

     sudo curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
    
  2. 解压并安装:

     tar -xvf ffmpeg-release-amd64-static.tar.xz
     sudo mv ffmpeg-*-static/ffmpeg /usr/local/bin/
     sudo mv ffmpeg-*-static/ffprobe /usr/local/bin/
    
  3. 验证:
    会看到一堆版本信息:

     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查看视频并支持边下边播了。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐