mp4通过ffmpeg转m3u8格式视频的方法

mp4转m3u8 格式视频

一、写在前头

为什么要播放 m3u8 格式的视频

  • 对于一个小视频来说,理论上直接播放 mp4 的本地文件即可
  • 但如果将网站部署到云上,其他用户通过网址访问时,想要看到这个视频,就需要先完整的下载格式为 mp4 的视频文件
  • 当视频文件下载完成后,网站才可以播放该视频,这就对于用户体验是极大的下降

那正规项目一般如何处理

  • 对于一个大型项目来说,一般会视频会使用流媒体播放器来播放视频
  • 例如阿里云的流媒体播放器,则是将所有视频存储到阿里云的流媒体服务器
  • 网页端通过阿里云为每个视频提供的 VID 来访问视频
  • 这首先需要在网页端继承一个流媒体播放器,同时还需要后端对接阿里云服务端,来获取视频的鉴权地址
  • 带来的好处是可以保证视频资源相对安全,降低被人直接盗取的可能性
  • 缺点则是对接起来过于繁琐,在小项目上显得得不偿失
  • 具体对接步骤可参考Java + jQuery 实现阿里云点播

那小项目可以如何快速操作

  • 可以使用 FFmpeg 将普通的 mp4 格式的视频文件转换为 m3u8 格式
  • 再使用 Video.js: 播放转码后的视频

二、实现步骤

  • 首先下载视频转码工具 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.m3u8video0.ts两个文件必须放置在同一个目录中
  • 4.具体是放置在 Nginx ,还是 Tomcat 这个随意,毕竟我们的静态网站要部署,实际上也需要依托服务器
  • 5.可以将视频文件放置于网站相同的服务器中,只需要指定网址 + 目录即可
  • 6. 如果使用vue来播放m3u8视频,会产生跨域(请用Nginx 代理跨域)
  • 本篇教程结束,如果觉得还不错,不妨收藏一下本站点,以免丢失,在此谢谢您嘞,我的宝!
云萌阁分享网所有资源均来自网络,如有侵权,请联系 yunmge@qq.com ,我们会及时处理相关信息!
云萌阁 - 分享网 » mp4通过ffmpeg转m3u8格式视频的方法

云萌阁 - 更多的精彩

云小店 云盘