在对接腾讯的trtc中,使用官方的直播自动截图功能出现了以下问题
因为自动截图和鉴黄是针对 直播 模块进行的腾讯的trtc实时音视频模块不能直接进行使用
提交腾讯云工单想咨询一下这个功能,被工作人员拽过来一个链接
TRTC 旁路流实现截图鉴黄https://www.rtcgeek.com/?/article/69
安装腾讯的扩展 composer.json

  1. "tencentcloud/tencentcloud-sdk-php": "v3.0.595",

重写两个类

在项目app下创建 /Plugins/Live/Models/

创建文件: CreateSnapshotTemplateRequest.php

<?php
namespace TencentCloud\Live\V20180801\Models;
use TencentCloud\Common\AbstractModel;
/**
 * CreateLiveSnapshotTemplate请求参数结构体
 *
 * @method string getTemplateName() 获取模板名称。
长度上限:255字节。
仅支持中文、英文、数字、_、-。
 * @method void setTemplateName(string $TemplateName) 设置模板名称。
长度上限:255字节。
仅支持中文、英文、数字、_、-。
 * @method integer getCosAppId() 获取Cos 应用 ID。
 * @method void setCosAppId(integer $CosAppId) 设置Cos 应用 ID。
 * @method string getCosBucket() 获取Cos Bucket名称。
注:CosBucket参数值不能包含-[appid] 部分。
 * @method void setCosBucket(string $CosBucket) 设置Cos Bucket名称。
注:CosBucket参数值不能包含-[appid] 部分。
 * @method string getCosRegion() 获取Cos地区。
 * @method void setCosRegion(string $CosRegion) 设置Cos地区。
 * @method string getDescription() 获取描述信息。
长度上限:1024字节。
仅支持中文、英文、数字、_、-。
 * @method void setDescription(string $Description) 设置描述信息。
长度上限:1024字节。
仅支持中文、英文、数字、_、-。
 * @method integer getSnapshotInterval() 获取截图间隔,单位s,默认10s。
范围: 2s ~ 300s。
 * @method void setSnapshotInterval(integer $SnapshotInterval) 设置截图间隔,单位s,默认10s。
范围: 2s ~ 300s。
 * @method integer getWidth() 获取截图宽度。默认:0(原始宽)。
范围:0-3000 。
 * @method void setWidth(integer $Width) 设置截图宽度。默认:0(原始宽)。
范围:0-3000 。
 * @method integer getHeight() 获取截图高度。默认:0(原始高)。
范围:0-2000 。
 * @method void setHeight(integer $Height) 设置截图高度。默认:0(原始高)。
范围:0-2000 。
 * @method integer getPornFlag() 获取是否开启鉴黄,0:不开启,1:开启。默认:0。
 * @method void setPornFlag(integer $PornFlag) 设置是否开启鉴黄,0:不开启,1:开启。默认:0。
 * @method string getCosPrefix() 获取Cos Bucket文件夹前缀。
如不传,实际按默认值
/{Year}-{Month}-{Day}
生效
 * @method void setCosPrefix(string $CosPrefix) 设置Cos Bucket文件夹前缀。
如不传,实际按默认值
/{Year}-{Month}-{Day}
生效
 * @method string getCosFileName() 获取Cos 文件名称。
如不传,实际按默认值
{StreamID}-screenshot-{Hour}-{Minute}-{Second}-{Width}x{Height}{Ext}
生效
 * @method void setCosFileName(string $CosFileName) 设置Cos 文件名称。
如不传,实际按默认值
{StreamID}-screenshot-{Hour}-{Minute}-{Second}-{Width}x{Height}{Ext}
生效
 */
class CreateSnapshotTemplateRequest extends AbstractModel
{
    /**
     * @var string 模板名称。
    长度上限:255字节。
    仅支持中文、英文、数字、_、-。
     */
    public $TemplateName;
    /**
     * @var integer Cos 应用 ID。
     */
    public $CosAppId;
    /**
     * @var string Cos Bucket名称。
    注:CosBucket参数值不能包含-[appid] 部分。
     */
    public $CosBucket;
    /**
     * @var string Cos地区。
     */
    public $CosRegion;
    /**
     * @var string 描述信息。
    长度上限:1024字节。
    仅支持中文、英文、数字、_、-。
     */
    public $Description;
    /**
     * @var string 创建TRTC截图模版专用参数。
     */
    public $ProductName;
    /**
     * @var integer 截图间隔,单位s,默认10s。
    范围: 2s ~ 300s。
     */
    public $SnapshotInterval;
    /**
     * @var integer 截图宽度。默认:0(原始宽)。
    范围:0-3000 。
     */
    public $Width;
    /**
     * @var integer 截图高度。默认:0(原始高)。
    范围:0-2000 。
     */
    public $Height;
    /**
     * @var integer 是否开启鉴黄,0:不开启,1:开启。默认:0。
     */
    public $PornFlag;
    /**
     * @var string Cos Bucket文件夹前缀。
    如不传,实际按默认值
    /{Year}-{Month}-{Day}
    生效
     */
    public $CosPrefix;
    /**
     * @var string Cos 文件名称。
    如不传,实际按默认值
    {StreamID}-screenshot-{Hour}-{Minute}-{Second}-{Width}x{Height}{Ext}
    生效
     */
    public $CosFileName;
    /**
     * @param string $TemplateName 模板名称。
    长度上限:255字节。
    仅支持中文、英文、数字、_、-。
     * @param integer $CosAppId Cos 应用 ID。
     * @param string $CosBucket Cos Bucket名称。
    注:CosBucket参数值不能包含-[appid] 部分。
     * @param string $CosRegion Cos地区。
     * @param string $Description 描述信息。
     * @param string $ProductName 创建TRTC截图模版专用参数。
    长度上限:1024字节。
    仅支持中文、英文、数字、_、-。
     * @param integer $SnapshotInterval 截图间隔,单位s,默认10s。
    范围: 2s ~ 300s。
     * @param integer $Width 截图宽度。默认:0(原始宽)。
    范围:0-3000 。
     * @param integer $Height 截图高度。默认:0(原始高)。
    范围:0-2000 。
     * @param integer $PornFlag 是否开启鉴黄,0:不开启,1:开启。默认:0。
     * @param string $CosPrefix Cos Bucket文件夹前缀。
    如不传,实际按默认值
    /{Year}-{Month}-{Day}
    生效
     * @param string $CosFileName Cos 文件名称。
    如不传,实际按默认值
    {StreamID}-screenshot-{Hour}-{Minute}-{Second}-{Width}x{Height}{Ext}
    生效
     */
    function __construct()
    {
    }
    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("TemplateName",$param) and $param["TemplateName"] !== null) {
            $this->TemplateName = $param["TemplateName"];
        }
        if (array_key_exists("CosAppId",$param) and $param["CosAppId"] !== null) {
            $this->CosAppId = $param["CosAppId"];
        }
        if (array_key_exists("CosBucket",$param) and $param["CosBucket"] !== null) {
            $this->CosBucket = $param["CosBucket"];
        }
        if (array_key_exists("CosRegion",$param) and $param["CosRegion"] !== null) {
            $this->CosRegion = $param["CosRegion"];
        }
        if (array_key_exists("Description",$param) and $param["Description"] !== null) {
            $this->Description = $param["Description"];
        }
        if (array_key_exists("ProductName",$param) and $param["ProductName"] !== null) {
            $this->ProductName = $param["ProductName"];
        }
        if (array_key_exists("SnapshotInterval",$param) and $param["SnapshotInterval"] !== null) {
            $this->SnapshotInterval = $param["SnapshotInterval"];
        }
        if (array_key_exists("Width",$param) and $param["Width"] !== null) {
            $this->Width = $param["Width"];
        }
        if (array_key_exists("Height",$param) and $param["Height"] !== null) {
            $this->Height = $param["Height"];
        }
        if (array_key_exists("PornFlag",$param) and $param["PornFlag"] !== null) {
            $this->PornFlag = $param["PornFlag"];
        }
        if (array_key_exists("CosPrefix",$param) and $param["CosPrefix"] !== null) {
            $this->CosPrefix = $param["CosPrefix"];
        }
        if (array_key_exists("CosFileName",$param) and $param["CosFileName"] !== null) {
            $this->CosFileName = $param["CosFileName"];
        }
    }
}

创建文件: CreateSnapshotTemplateResponse.php

<?php
/*
 * Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Live\V20180801\Models;
use TencentCloud\Common\AbstractModel;
/**
 * CreateLiveSnapshotTemplate返回参数结构体
 *
 * @method integer getTemplateId() 获取模板Id。
 * @method void setTemplateId(integer $TemplateId) 设置模板Id。
 * @method string getRequestId() 获取唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
 * @method void setRequestId(string $RequestId) 设置唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
 */
class CreateSnapshotTemplateResponse extends AbstractModel
{
    /**
     * @var integer 模板Id。
     */
    public $TemplateId;
    /**
     * @var string 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
     */
    public $RequestId;
    /**
     * @param integer $TemplateId 模板Id。
     * @param string $RequestId 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
     */
    function __construct()
    {
    }
    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("TemplateId",$param) and $param["TemplateId"] !== null) {
            $this->TemplateId = $param["TemplateId"];
        }
        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}

项目composer.php加载该自定义autoload.php 加载器:

   "autoload": {
        "psr-4": {
            "app\\": "application"
        },
        "files": [ //以下是自己添加的两个类
            "app/Plugins/Live/Models/CreateSnapshotTemplateRequest.php",
            "app/Plugins/Live/Models/CreateSnapshotTemplateResponse.php"
        ]
    },

修改了composer.php的autoload的配置后,我们需要重新生成整个项目最终autoload.php,在项目路径执行命令:

composer dump-autoload