1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Bping-ffmpeg-push

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ffmpeg-push

Push video stream to live server with ffmpeg binary

Установка 安装

composer require bping/ffmpeg-push dev-master

Использование

First
  • Установите ffmpeg, и одновременно включите команду ffprobe.
  • Настройте каталог исполняемых файлов в переменной среды PATH.

Установите ffmpeg, необходимо одновременно включить команду ffprobe. Настройте каталог исполняемых файлов в среде PATH.

Push 推流
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'));

// 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();
Result PushInfo
// Is Successful 是否成功
$pushinfo->isSuccessful()
//输出
$pushinfo->getOutput()
// Error output 错误输出
$pushinfo->getErrOutput()
// 执行返回码
$pushinfo->getExitCode()
// 目前推流时间,可以用中途断流重推起点时间
$pushinfo->getCurrentTime()
// More infomation: PushInfo类
Input 输入 PushInput
PushInput::create()
->setStartTime(10)
->setInputVideo('test/test.mp4')
Transcoding 转码 PushFormat
PushFormat::create()
    ->setVideoCodec(PushFormat::CODE_V_COPY)
    ->setAudioCodec(PushFormat::CODE_A_COPY)
    ->setAudioKiloBitrate(125)
    ->setVideoKiloBitrate(500)
    ->setAdditionalParamaters(
        array(
            '--preset',
            'ultrafast',
            ' --tune',
            'zerolatency',
        )
    );
Output 输出 PushOutput
PushOutput::create()->setPushUrl($pushUrl)
Getting Video File Information 获取视频文件信息
///** @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

Имя или путь команды ffmpeg. Если хотите использовать простое название, не забудьте поместить ffmpeg в среду PATH. По умолчанию: ffmpeg

ffprobe.binaries:

Имя или путь к команде ffprobe. Если вы хотите использовать простое имя, не забудьте добавить ffprobe в переменную среды PATH. Значение по умолчанию: ffprobe

Имя или путь команды ffprobe. Если хотите использовать простое название, не забудьте поместить ffprobe в среду PATH. По умолчанию: ffprobe

timeout:

Время ожидания выполнения команды, единица измерения (с). Учитывая, что время потоковой передачи обычно больше, значение по умолчанию составляет один день.

Время ожидания команды, единица (с). Поскольку время потоковой передачи обычно велико, значение по умолчанию — один день.

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

Основные зависимости

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Упаковка потоковой передачи команд FFmpeg. Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Bping-ffmpeg-push.git
git@api.gitlife.ru:oschina-mirror/Bping-ffmpeg-push.git
oschina-mirror
Bping-ffmpeg-push
Bping-ffmpeg-push
master