博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php ffmpeg 推流库 --ffmpeg-push
阅读量:6118 次
发布时间:2019-06-21

本文共 2668 字,大约阅读时间需要 8 分钟。

hot3.png

项目地址:

首先

  • 安装,必须同时包含ffprobe命令
  • 配置可执行文件目录到环境变量PATH中

安装

composer require bping/ffmpeg-push

使用

首先

  • 安装,必须同时包含ffprobe命令
  • 配置可执行文件目录到环境变量PATH中

推流

require __DIR__ . '/trunk/vendor/autoload.php';use FFMpegPush\PushFormat;use FFMpegPush\PushInput;use FFMpegPush\PushOutput;use FFMpegPush\PushVideo; ///** @var  $ffprobe FFProbeCommand */ //$ffprobe = FFProbeCommand::create(); //var_dump($ffprobe->format('test.mp4'));// 推流// ffmpeg -re  -i  \"test/test.mp4\" -c:v copy -c:a copy -f flv rtmp://pili-publish.heliwebs.com $pushUrl = 'rtmp://pili-publish.heliwebs.com'; $pushCmd = PushVideo::create(); // 监听推流进度 $pushCmd->onProgress(function ($percent, $remaining, $rate) { //    var_dump(func_get_args());     echo "progress:$percent% remaining:$remaining(s) rate:$rate(kb/s)\n"; });  $pushCmd->setInput(     PushInput::create()         ->setStartTime(0)         ->setInputVideo('res/test.mp4') )     ->setFormat(         PushFormat::create()             ->setVideoCodec(PushFormat::CODE_V_COPY)     )     ->setOutput(         PushOutput::create()             ->setPushUrl($pushUrl)     );  echo $pushCmd->getCommandLine();  // 开始推流 $pushCmd->push();  echo $pushCmd->getErrorOutput(); echo "\n"; echo "Exit Code: " . $pushCmd->getExitCode();           // 停止推流,需要异步调用 // $pushCmd->stop();

结果 PushInfo

//是否成功  $pushinfo->isSuccessful()    //输出  $pushinfo->getOutput()    //错误输出  $pushinfo->getErrOutput()    //执行返回码  $pushinfo->getExitCode()//目前推流时间,可以用中途断流重推起点时间  $pushinfo->getCurrentTime()//更多请看 PushInfo类

输入 PushInput

PushInput::create()  ->setStartTime(10)  ->setInputVideo('test/test.mp4')

转码 PushFormat

PushFormat::create()            ->setVideoCodec(PushFormat::CODE_V_COPY)            ->setAudioCodec(PushFormat::CODE_A_COPY)            ->setAudioKiloBitrate(125)            ->setVideoKiloBitrate(500)            ->setAdditionalParamaters(                array(                    '--preset',                    'ultrafast',                    ' --tune',                    'zerolatency',                )            );

输出 PushOutput

PushOutput::create()->setPushUrl($pushUrl)

获取视频文件信息

///** @var  $ffprobe FFProbeCommand */$ffprobe = FFProbeCommand::create();var_dump($ffprobe->format('test/test.mp4'));var_dump($ffprobe->stream('test/test.mp4'));

配置

ffmpeg.binaries:

ffmpeg命令名称或者路径。如果想使用简单名称,记得把ffmpeg加入环境变量PATH 中。 默认值:ffmpeg

ffprobe.binaries:

ffprobe命令名称或者路径。如果想使用简单名称,记得把ffprobe加入环境变量PATH 中。 默认值:ffprobe

timeout:

命令执行的超时时长,单位(s).考虑到推流时长一般较长,所以默认值为一天

$pushCmd = PushVideo::create(Configuration::create(    array(    'ffmpeg.binaries'=>array('ffmpeg'),    'ffprobe.binaries'=>array('ffprobe'),    'timeout'=>10800,    )));

主要依赖

转载于:https://my.oschina.net/u/1167564/blog/893679

你可能感兴趣的文章
zzzObjective-C的动态特性
查看>>
dl dd dt与ul li
查看>>
记录Nginx代理的配置
查看>>
VisualSvn+TortoiseSVN的安装说明
查看>>
pycharm 快捷键
查看>>
UML类图、接口、包、关系
查看>>
CoreGraphics
查看>>
Javascript面向对象编程(二):构造函数的继承
查看>>
Android中RelativeLayout各个属性及其含义
查看>>
vue elementUI 表单校验(数组多层嵌套)
查看>>
面向对象----对象的组合和
查看>>
面板厂商掀起新一轮较量
查看>>
跟KingDZ学HTML5之十三 HTML5颜色选择器
查看>>
自定义UItextFiled,限制TextFiled 的输入长度
查看>>
checkedListBox
查看>>
网页性能优化之异步加载js文件
查看>>
css知多少(5)——选择器(转)
查看>>
对百度的评价
查看>>
5.Zookeeper的两种安装和配置(Windows):单机模式与集群模式
查看>>
03中间件mycat对pxc集群的分片处理
查看>>