由于需求,需要提供浏览器播放 mp4 和 flv 视频功能。首先浏览器直接支持 flv 和 mp4 格式。只需要在对应的 WEB 服务上完成配置即可。
注意,我的需求是通过浏览器直接播放 MP4,而不是服务器提供 RTMP 功能,使用 RTMP 又是另外一种配置。
服务器环境
Ubuntu 18.04 + nginx 1.14.0。完整的环境如下。
1 2 3 4 5 6 7 8 | $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic $ nginx -v nginx version: nginx/1.14.0 (Ubuntu) |
Nginx
安装 Nginx 服务
如果已经安装 Nginx 可以跳过本步骤。如果没有,请使用以下命令:
1 | sudo apt install nginx |
添加 Nginx 组件
1 | sudo apt install nginx-extras |
配置 Nginx
$ sudo vi /etc/nginx/sites-enabled/default
在 server 配置加增加如下:
1 2 3 4 5 6 7 8 | location ~ \.mp4 { root /data/movie; mp4; } location ~ \.flv { root /data/movie; flv; } |
注意:root 表示对应的跟目录位置。
然后保存配置。
验证配置
1 2 3 | $ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
这样测试说明 nginx 配置是正确的。
重启启动 nginx 服务
1 | $ sudo service nginx restart |
验证
下面就是见证奇迹。我在 /data/movie 目录下有如下文件。
1 2 3 4 5 6 7 | $ ls -al /data/movie/ total 85512 drwxr-xr-x 2 www-data www-data 4096 Mar 6 2020 . drwxr-xr-x 7 root root 4096 Oct 30 12:47 .. -rw-rw-r-- 1 ubuntu ubuntu 56532559 Mar 6 2020 Python3.mode1.mp4 -rw-rw-r-- 1 ubuntu ubuntu 14278520 Mar 6 2020 Python3.mode2.mp4 -rw-rw-r-- 1 ubuntu ubuntu 16740845 Mar 6 2020 Python3.mode3.mp4 |
打开浏览器,输入对应的 IP 地址,加上需要播放的 mp4 文件。如下图:
这样就可以正确播放出 MP4 文件了。
错误可能
浏览器有下载插件或者软件
最大的可能是你的浏览器上增加了自动下载功能。比如我用的 Firefox 有 IDM 插件,直接打开上面的 MP4 文件,就给 IDM 拦截了,开始自动下载功能。如下图。
解决方法:换浏览器,或者关闭 IDM 插件。
云主机没有打开对应的端口
这个问题在浏览器的显示应该是找不到网页。请确认云主机是否打开配置端口。
验证平台
本方法已经在:阿里云主机、腾讯云主机和 Win10+WSL2 机器上测试过。