mp4转m3u8 格式视频
一、写在前头
为什么要播放 m3u8 格式的视频?
- 对于一个小视频来说,理论上直接播放 mp4 的本地文件即可
- 但如果将网站部署到云上,其他用户通过网址访问时,想要看到这个视频,就需要先完整的下载格式为 mp4 的视频文件
- 当视频文件下载完成后,网站才可以播放该视频,这就对于用户体验是极大的下降
那正规项目一般如何处理?
- 对于一个大型项目来说,一般会视频会使用流媒体播放器来播放视频
- 例如阿里云的流媒体播放器,则是将所有视频存储到阿里云的流媒体服务器
- 网页端通过阿里云为每个视频提供的 VID 来访问视频
- 这首先需要在网页端继承一个流媒体播放器,同时还需要后端对接阿里云服务端,来获取视频的鉴权地址
- 带来的好处是可以保证视频资源相对安全,降低被人直接盗取的可能性
- 缺点则是对接起来过于繁琐,在小项目上显得得不偿失
- 具体对接步骤可参考Java + jQuery 实现阿里云点播
那小项目可以如何快速操作?
二、实现步骤
- 首先下载视频转码工具 FFmpeg
- 前往FFmpeg Download下载对应版本的工具
- 该工具不需要安装,是通过命令行运行的
- 文章资源提供了FFmpeg工具下载,请自行取舍
需要注意的一点:如果是 Mac 用户,可能会尝试使用 Homebrew 安装,这里需要说的是 “可以,但是没必要”
- 因为如果通过 Homebrew 安装,会自动安装一堆依赖文件,而且最后工具可能还安装失败
- 关键是该工具的使用不需要做任何系统配置,直接前往执行文件目录执行对应命令即可
- 所以完全没必要通过 Homebrew 安装到系统中
使用 FFmpeg 对视频进行转码
- 下载成功并解压后的目录入下图

- 打开终端,进入到上图文件中的目录

- 为了操作简单,将待转码的视频放在D:\video(D盘里新建一个video文件夹)

- 在终端执行如下命令( 二选一 )
- 1. 第一种转换命令:#转mp4为ts
ffmpeg -y -i D:\video\video.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb D:\video\a.ts
- 2. 第二种转换命令:#一次性完成转换和切片,切片时长为60秒
ffmpeg -i D:\video\video.mp4 -c:v libx264 -hls_time 60 -hls_list_size 0 -c:a aac -strict -2 -f hls D:\video\zxcu.m3u8

- 这时候视频就转换完成咯!
三、注意事项
需要注意的是上述生成的两类文件(m3u8和ts)需要保存在一起,将转码后的视频文件放置到服务器中
- 1.需要注意的是,m3u8 格式的文件无法像 mp4 一样通过相对/绝对路径进行访问
- 2.必须将其放置在某个服务器中,然后通过链接进行访问
- 3.而且需要再次强调的是,video.m3u8和video0.ts两个文件必须放置在同一个目录中
- 4.具体是放置在 Nginx ,还是 Tomcat 这个随意,毕竟我们的静态网站要部署,实际上也需要依托服务器
- 5.可以将视频文件放置于网站相同的服务器中,只需要指定网址 + 目录即可
- 6. 如果使用vue来播放m3u8视频,会产生跨域(请用Nginx 代理跨域)
- 本篇教程结束,如果觉得还不错,不妨收藏一下本站点,以免丢失,在此谢谢您嘞,我的宝!