vlambda博客
学习文章列表

如何使用nginx创建本地视频播放服务

上一集我们大概介绍了视频网站是使用M3U8来播放视频的,那么如果你有一些本地视频,想要像视频网站一样在局域网内播放该如何操作呢。

意义

我们为什么会有这种需求呢。举个例子,视频存在硬盘里,插在电脑上就能在电脑上播放,但是随着移动技术的普及,手机愈发有替代电脑的趋势,这时候如果我想在手机上看这个剧,就得把手机连上电脑,再从硬盘里拷贝到手机上,不仅麻烦,而且还占手机存储空间。

关于nginx

Nginx其实是一个web服务器,就像Java中使用比较多的Tomcat一样,有了这个web服务器就可以监听某个端口,当外部请求本机的该端口时候就可以对请求进行响应。(题外话:nginx好像是俄罗斯人发明的,然后托管到了开源基金会,俄乌战争期间俄罗斯被禁止使用nginx了,所谓没有国界,终究还是假的,自身强才是硬道理呀)

实现思路

其实就是通过nginx把电脑上的某个路径下的静态资源文件(视频图片等等都可以叫做静态资源)全部暴露出去,然后使用http请求的方式访问即可。

具体实现

首先我们需要下载nginx

http://nginx-win.ecsds.eu/download/


下载这个包到本地之后解压。

然后在解压文件夹的conf文件夹内新建nginx.conf文件,然后通过记事本打开该文件,进行一些相关配置。


worker_processes  1;   #Nginx进程数,建议设置为等于CPU总核数 events {    worker_connections  1024;  #工作模式与连接数上限} #HTTP服务http {    server {        listen       80;      #监听端口,80为默认的http请求端口,所以设置该端口之后请求不需要带端口号        server_name  localhost;   #服务名
   location /static/ {    #请求路径        alias C:/data/;    #请求路径默认请求到的盘    }
       #举个例子 有个文件在 C:/data/1.mp4,那么通过nginx访问  http://localhost/static/1.mp4 就可以获取到这个静态文件    }}

配置好之后可以校验一下配置文件是否正常,在nginx根目录下运行该命令

nginx.exe -t

题外话——关于命令行运行

其实直接在nginx根目录下右键可以打开控制台页面,但是是PowerShell页面,运行就会失败,还不知道为啥,所以只能老老实实打开cmd页面。

1.快捷键win+r,会弹出下面的弹窗

如何使用nginx创建本地视频播放服务

2.在其中输入“cmd”之后点击确定,然后会弹出如下页面

如何使用nginx创建本地视频播放服务

3.之后将当前目录移动到刚才的文件夹目录下

例如我刚才解压的文件夹位置在

C:\software\network\nginx 1.7.11.3 Gryphon

那么我就在上面的页面里输入

cd C:\software\network\nginx 1.7.11.3 Gryphon

命令行会变成如下样式

如何使用nginx创建本地视频播放服务

位置已经移动到了nginx根目录下,直接运行上面的命令就可以了

如何使用nginx创建本地视频播放服务

配置文件校验如果结果如图所示就是正常的,如果有问题还需要再检查一下。

然后输入如下命令启动nginx

start nginx

启动成功后用浏览器访问localhost可以看到如下页面

如何使用nginx创建本地视频播放服务

那就证明nginx启动成功。

我已经提前准备好了一个文件C:\data\1.mp4

下一步就是通过局域网访问电脑的ip在手机上观看这个mp4文件

题外话——关于查看电脑本机局域网IP

与上一个题外话前几个步骤类似,弹出cmd的黑框之后输入命令

ipconfig
如何使用nginx创建本地视频播放服务

然后我们就在手机上打开浏览器,然后输入请求url:

http://192.168.31.193/static/1.mp4

就可以观看该视频,操作可见下方视频

Replay Share Like

0/0

进度条,百分之0
00:00
/
00:17
00:17
全屏

继续观看

如何使用nginx创建本地视频播放服务

转载
,
如何使用nginx创建本地视频播放服务
六月的木星

可以看到已经成功了,但是即使是局域网mp4格式还是有点卡顿的,下面我们就把该mp4转换为m3u8格式。

将mp4转化为m3u8

ffmpeg是一个强大的视频操作的工具,可以进行视频采集,转换等操作

https://www.gyan.dev/ffmpeg/builds/

如何使用nginx创建本地视频播放服务

7z或者zip随便下载一个就可以了。

然后操作步骤与nginx类似,下载完之后解压就可以了。

然后运行以下命令

#1.将转为一个ts刚才解压的ffmpeg目录地址/ffmpeg.exe -y -i mp4文件路径  -vcodec copy -acodec copy -vbsf h264_mp4toannexb ts文件保存地址#2.切分ts刚才解压的ffmpeg目录地址/ffmpeg.exe -i ts地址 -c copy -map 0 -f segment -segment_list m3u8文件地址 -segment_time 10 ts地址\%3d.ts#%3d的意思是按照数字顺序命名,且数字会补足三位

我的ffmpeg在位置

C:\software\tool\ffmpeg-5.0-essentials_build\bin下

因此我的打开cmd控制台之后运行的命令就是

#1.将转为一个tsC:\software\tool\ffmpeg-5.0-essentials_build\bin\ffmpeg.exe -y -i C:\data\1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb C:\data\1.ts#2.切分tsC:\software\tool\ffmpeg-5.0-essentials_build\bin\ffmpeg.exe -i C:\data\1.ts -c copy -map 0 -f segment -segment_list C:\data\temp\ali.m3u8 -segment_time 10 C:\data\temp\%3d.ts

运行完毕之后可以看到ts和m3u8已经生成了

再次尝试播放

在手机上请求:

http://192.168.31.193/static/temp/ali.m3u8

但是因为m3u8毕竟不是一个视频,我们需要借助一个播放器来播放这个视频——MX播放器。

Replay Share Like

0/0

进度条,百分之0
00:00
/
00:28
00:28
全屏

继续观看

如何使用nginx创建本地视频播放服务

转载
,
如何使用nginx创建本地视频播放服务
六月的木星

啊哈哈哈,有点尴尬哈,还是很慢,但是总体上来说思路应该是不会错的。

未来的一些展望

可以看到其实还是有一些局限,就是你必须知道这个文件的本地位置才可以进行观看。