首页 > 开发 > PHP > 正文

PHP结合Ffmpeg快速搭建流媒体服务的实践记录

2024-05-04 22:41:54
字体:
来源:转载
供稿:网友

一、背景

ffmpeg应该是目前最强大的视频管理程序,当你需要截取视频第一帧,对视频类型进行转换,截取gif图片等一系列对视频的操作,ffmpeg绝对是最好的扩展

笔者想将自己收藏的一些电影放到网站上可以用来随时播放,不过遇到了一个问题,便是如果直接将MP4文件放放到网站目录当中,手机端必须下载整个视频才可以播放,而如果跨外网传输,这实在是不太现实。

为了解决这个问题,便想着搭建一套流媒体服务,这样手机就可以边看边下载,查询了一些资料了了解到需要先将视频分成一小片来传输,比如将MP4转码为M3U8格式,查询了相关转码方法,比较主流的方式是使用ffmpeg这个开源工具

二、操作概要

安装Ffmpeg 服务搭建 功能测试

三、搭建ffmpeg

视频转码的工具可能有很多,但开源且使用人数最多的还是莫过于ffmpeg这个工具,具体功能笔者不在这里详细讲解;安装此工具的方式有很多,比如apt安装、源码安装、docker安装等等,不过docker是跨平台的,因此笔者这里将以docker方式安装为例

3.1 镜像下载

首先笔者需要下载对应的docker镜像,参考命令如下

docker pull jrottenberg/ffmpeg

命令执行过程中将会从远处下载镜像,这个时间由当前的网络带宽所决定,当下载完成之后,可以看到如下参考信息

Using default tag: latestlatest: Pulling from jrottenberg/ffmpegb234f539f7a1: Pull complete55172d420b43: Pull complete5ba5bbeb6b91: Pull complete43ae2841ad7a: Pull completef6c9c6de4190: Pull complete2a0ef76bfa54: Pull complete40ddf796a4bb: Pull complete32ba137d2764: Pull completeDigest: sha256:bcf65375f593518de7e450fd6b775d16a047d3ded00957c2e794e2fe8f7e1590Status: Downloaded newer image for jrottenberg/ffmpeg:latest

3.2 容器运行

当容器下载完毕之后,可以用一些命令进行验证是否能够正常运行,如下参考命令

docker run jrottenberg/ffmpeg

命令执行完毕之后,会返回如下结果

Hyper fast Audio and Video encoderusage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...Getting help:..... 省略Audio options:-aframes number  set the number of audio frames to output-aq quality   set audio quality (codec-specific)-ar rate   set audio sampling rate (in Hz)-ac channels  set number of audio channels-an     disable audio-acodec codec  force audio codec ('copy' to copy stream)-vol volume   change audio volume (256=normal)-af filter_graph set audio filtersSubtitle options:-s size    set frame size (WxH or abbreviation)-sn     disable subtitle-scodec codec  force subtitle codec ('copy' to copy stream)-stag fourcc/tag force subtitle tag/fourcc-fix_sub_duration fix subtitles duration-canvas_size size set canvas size (WxH or abbreviation)-spre preset  set the subtitle options to the indicated preset            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表