martin1982 / live-broadcast-easyadmin-bundle
直播套餐的 Easyadmin 插件
Requires
- php: >=7.4|>=8.0
- ext-fileinfo: *
- easycorp/easyadmin-bundle: ^3.0|^4.0
- martin1982/live-broadcast-bundle: dev-master
- symfony/framework-bundle: ^4.4|^5.4|^6.0
- symfony/mime: ^4.4|^5.4|^6.0
Requires (Dev)
- doctrine/doctrine-migrations-bundle: ^2.1|^3.0
- escapestudios/symfony2-coding-standard: ^3.1
- friendsofphp/php-cs-fixer: ^3.0
- guzzlehttp/guzzle: ^7.0
- php-mock/php-mock-phpunit: ^2.6
- phpunit/phpunit: ^9.1
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-11 13:42:32 UTC
README
目录
关于
直播套餐将使您能够将直播视频流计划到多个频道,如 Twitch、YouTube Live、Facebook Live(称为输出或频道)。
作为“输入”,我们支持文件、URL 或现有的 RTMP 流。
有关更多信息,您可以查看下面的最新记录演示,检查演示项目 https://github.com/Martin1982/live-broadcast-demo 或继续阅读;
先决条件
广播员需要一些命令;
ffmpeg 3.x 或更高版本
在 Linux 上
ps
kill
在 Mac 上
ps
grep
kill
在 Windows 上
tasklist
taskkill
您可以使用以下 Symfony 命令 livebroadcaster:test:shell
在下面描述的安装后测试这些先决条件。
基本安装
此套餐将在 Packagist 上提供。然后您可以使用 Composer 安装它。
$ composer require martin1982/live-broadcast-bundle
接下来,对于 Symfony < 4,在内核中启用套餐
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Martin1982\LiveBroadcastBundle\LiveBroadcastBundle(), ); }
使用 Doctrine 更新您的数据库模式,当升级时建议使用迁移。
要启动广播调度程序,您可以运行以下命令
$ php app/console livebroadcaster:broadcast
为了通过管理界面提供广播计划,我们添加了对 Sonata Admin 套件的支持。
FFMpeg 日志目录
要查看 FFMpeg 的输出,您需要在您的 app/config/config.yml
中配置一个日志目录。
live_broadcast:
ffmpeg:
log_directory: '%kernel.logs_dir%'
事件循环
您可以使用此配置来设置事件循环计时器
live_broadcast:
eventloop:
timer: 5
缩略图设置
为缩略图设置以下配置
live_broadcast:
thumbnail:
upload_directory: '%kernel.root_dir%/../web/uploads/thumbnails'
web_path: '/uploads/thumbnails'
启用 Facebook Live
在 https://developers.facebook.com 上创建一个 Facebook 应用,并具有以下权限
- user_videos
- user_events
- user_managed_groups
- manage_pages
- publish_actions
- Live-Video API
使用以下配置编辑您的 app/config/config.yml
live_broadcast:
facebook:
application_id: YourFacebookAppId
application_secret: YourFacebookAppSecret
当使用 Sonata Admin 时,将 Sonata 块添加到您的块配置中
sonata_block:
blocks:
sonata.block.service.facebookauth:
contexts: [admin]
启用 YouTube Live
登录到 https://console.developers.google.com/ 并启用 'YouTube Data API v3'。
为您的服务器设置 oAuth 凭证。如果您使用此套餐中的 Sonata Admin,则重定向 URI 的路径是 <your domain>/admin/channel/youtube/oauthprovider
将 YouTube API 信息添加到您的 config.yml
live_broadcast:
youtube:
client_id: YourGoogleOauthClientId
client_secret: YourGoogleOauthClientSecret
redirect_route: admin_martin1982_livebroadcast_channel_abstractchannel_youtubeoauth
当使用 Sonata Admin 时,将 Sonata 块添加到您的块配置中
sonata_block:
blocks:
sonata.block.service.youtubeauth:
contexts: [admin]
将这些行添加到您的 parameters.yml 中(用于生成缩略图 URL)
parameters:
router.request_context.host: broadcast.com
router.request_context.scheme: https
添加新输出平台
在 Entity/Channel 中创建一个新的 Channel 实体,它扩展了 AbstractChannel(例如 ChannelNew)
在 Service/StreamOutput 中创建一个新的 StreamOutput 服务,它实现了 OutputInterface(例如 OutputNew)
使用输出标签在 Resources/config/services.yml 中配置该服务
live.broadcast.output.new:
class: Martin1982\LiveBroadcastBundle\Service\StreamOutput\OutputNew
tags:
- { name: live.broadcast.output, platform: 'New' }
要添加对 Sonata admin 的支持,在 Admin/ChannelAdmin.php 中为 Channel 添加一个新表单
protected function configureFormFields(FormMapper $formMapper) { if ($subject instanceof ChannelNew) { $formMapper->add('...', 'text', array('label' => '...')); } }
接下来,在 Resources/config/admin.yml 中为 channelAdmin 添加子类
sonata.admin.channel
calls:
- [setConfiguredSubclasses, [ { "Name": Martin1982\LiveBroadcastBundle\Entity\Channel\ChannelNew } ] ]