martin1982/live-broadcast-easyadmin-bundle

直播套餐的 Easyadmin 插件

dev-master 2022-03-11 08:30 UTC

This package is auto-updated.

Last update: 2024-09-11 13:42:32 UTC


README

Build status

Latest stable version Latest unstable version

License Total downloads

目录

关于

直播套餐将使您能够将直播视频流计划到多个频道,如 Twitch、YouTube Live、Facebook Live(称为输出或频道)。

作为“输入”,我们支持文件、URL 或现有的 RTMP 流。

有关更多信息,您可以查看下面的最新记录演示,检查演示项目 https://github.com/Martin1982/live-broadcast-demo 或继续阅读;

IMAGE ALT TEXT

先决条件

广播员需要一些命令;

  • 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 } ] ]