- Notifications
You must be signed in to change notification settings - Fork16
Push video stream to live server with ffmpeg binary
License
BPing/ffmpeg-push
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Push video stream to live server with ffmpeg binary
composer require bping/ffmpeg-push dev-master
- Installffmpeg,and must include the
ffprobe
command at the same time - Configure the executable directory to the environment variable PATH
- 安装ffmpeg,必须同时包含
ffprobe
命令- 配置可执行文件目录到环境变量PATH中
require__DIR__ .'/trunk/vendor/autoload.php';useFFMpegPush\PushFormat;useFFMpegPush\PushInput;useFFMpegPush\PushOutput;useFFMpegPush\PushVideo;///** @var $ffprobe FFProbeCommand *///$ffprobe = FFProbeCommand::create();//var_dump($ffprobe->format('test.mp4'));// Push Command 推流命令// 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();// listening the progress of push flow 监听推流进度$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();// start to push$pushCmd->push();echo$pushCmd->getErrorOutput();echo"\n";echo"Exit Code:" .$pushCmd->getExitCode();// Stop pushing, asynchronous calls are required 停止推流,需要异步调用// $pushCmd->stop();
// Is Successful 是否成功$pushinfo->isSuccessful()//输出$pushinfo->getOutput()// Error output 错误输出$pushinfo->getErrOutput()// 执行返回码$pushinfo->getExitCode()// 目前推流时间,可以用中途断流重推起点时间$pushinfo->getCurrentTime()// More infomation: PushInfo类
PushInput::create() ->setStartTime(10) ->setInputVideo('test/test.mp4')
PushFormat::create() ->setVideoCodec(PushFormat::CODE_V_COPY) ->setAudioCodec(PushFormat::CODE_A_COPY) ->setAudioKiloBitrate(125) ->setVideoKiloBitrate(500) ->setAdditionalParamaters(array('--preset','ultrafast',' --tune','zerolatency', ) );
PushOutput::create()->setPushUrl($pushUrl)
///** @var $ffprobe FFProbeCommand */$ffprobe = FFProbeCommand::create();var_dump($ffprobe->format('test/test.mp4'));var_dump($ffprobe->stream('test/test.mp4'));
The name or path of
ffmpeg
command . If you want to use a simple name, remember to addffmpeg
to the environment variablePATH
. Default value:ffmpeg
ffmpeg命令名称或者路径。如果想使用简单名称,记得把ffmpeg加入环境变量
PATH
中。 默认值:ffmpeg
The name or path of
ffprobe
command . If you want to use a simple name, remember to addffprobe
to the environment variablePATH
. Default value:ffprobe
ffprobe命令名称或者路径。如果想使用简单名称,记得把ffprobe加入环境变量
PATH
中。 默认值:ffprobe
Overtime of command execution, unit (s). Considering that time of push stream is usually longer,the default value is one day .
命令执行的超时时长,单位(s).考虑到推流时长一般较长,所以默认值为一天
$pushCmd = PushVideo::create(Configuration::create(array('ffmpeg.binaries'=>array('ffmpeg'),'ffprobe.binaries'=>array('ffprobe'),'timeout'=>10800, )));
About
Push video stream to live server with ffmpeg binary
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.