91 lines
6.0 KiB
PHP
Executable File
91 lines
6.0 KiB
PHP
Executable File
<?php
|
||
/**
|
||
* 腾讯云实时音视频(TRTC)配置
|
||
*
|
||
* 点播列表里若出现多个带「UserId_s_」「UserId_e_」的文件(每用户一路),属于【单流】命名规则,几乎总是控制台
|
||
* 「全局自动录制」单流模板;可与 API 合流并存。API 合流文件可在点播搜前缀 mix_{诊单id}_{通话记录id}(TencentVod.UserDefineRecordId)。
|
||
* 需要【仅合流一个文件】时:请到 实时音视频控制台 → 应用管理 → 录制管理,关闭全局自动录制,仅用 API 触发。
|
||
* 关闭全局后若完全没有录制文件,请配置 .env 中 trtc.api_secret_id / trtc.api_secret_key(CAM),并查看 bindCallRoom 接口返回的 cloud_recording.message 或服务端日志。
|
||
* 若出现 cURL error 60:将 cacert.pem 放在 server 根目录或配置 recording_ssl_cafile;composer upgrade 覆盖 vendor 后若复发,需保留对 tencentcloud/common HttpConnection 的 verify 补丁或改用全局 php.ini CA。
|
||
* 合流成功时文件名一般为 SdkAppId_RoomId_序号.mp4,不含 UserId_s 段。
|
||
* @see https://cloud.tencent.com/document/product/647/76497
|
||
*/
|
||
return [
|
||
// SDK AppID - 在腾讯云控制台获取
|
||
'sdkAppId' => env('trtc.sdk_app_id', 0),
|
||
|
||
// 密钥 - 在腾讯云控制台获取
|
||
'secretKey' => env('trtc.secret_key', ''),
|
||
|
||
// UserSig过期时间(秒)默认24小时
|
||
'expireTime' => 86400,
|
||
|
||
// 是否启用
|
||
'enable' => env('trtc.enable', false),
|
||
|
||
// 管理端聊天窗「浏览器本地录制」开关(.env [trtc] ISLOCHOSTVOD=true 开启,false 关闭)
|
||
'is_lochost_vod' => filter_var(
|
||
env('trtc.ISLOCHOSTVOD', env('trtc.islochostvod', false)),
|
||
FILTER_VALIDATE_BOOLEAN
|
||
),
|
||
|
||
// 回调 URL 路径:/api/trtc/recording-notify 或 /api/trtc/recordingNotify(与控制台一致即可)。非空 token 时 Query 需 ?token=xxx
|
||
'recording_callback_token' => env('trtc.recording_callback_token', ''),
|
||
|
||
// 云 API(CAM)SecretId / SecretKey,用于 CreateCloudRecording / DeleteCloudRecording(与 UserSig 的 secretKey 不是同一个)
|
||
// .env 写在 [trtc] 段内时键名须为 API_SECRET_ID、API_SECRET_KEY(会合并为 TRTC_API_SECRET_ID 供 env('trtc.api_secret_id') 读取;勿写 TRTC_API_SECRET_ID 以免变成 TRTC_TRTC_API_SECRET_ID)
|
||
'api_secret_id' => env('trtc.api_secret_id', ''),
|
||
'api_secret_key' => env('trtc.api_secret_key', ''),
|
||
|
||
// 调用 TRTC OpenAPI 的地域:ap-guangzhou / ap-beijing / ap-shanghai
|
||
'recording_api_region' => env('trtc.recording_api_region', 'ap-guangzhou'),
|
||
|
||
// 云端录制请求 https://trtc.tencentcloudapi.com/ 时使用的 CA 证书包绝对路径(Windows 无系统 CA 链时填此可避免 cURL 60)。也可将 cacert.pem 放在项目根目录 server/cacert.pem
|
||
'recording_ssl_cafile' => env('trtc.recording_ssl_cafile', ''),
|
||
|
||
// CreateCloudRecording → RecordParams.RecordMode:1=单流,2=混流(合流)。startMixRecording 内会强制为 2
|
||
'recording_record_mode' => (int)env('trtc.recording_record_mode', 2),
|
||
|
||
// CreateCloudRecording → RoomIdType:须与 TRTC 房间一致。0=强制字符串房,1=强制数字房。留空或 auto=按房间号自动(纯数字→1,否则→0)。勿默认填 0,否则 TUICall 数字房会一直用错类型导致拉流 Idle
|
||
'recording_room_id_type' => env('trtc.recording_room_id_type', ''),
|
||
|
||
// MixLayoutParams.MixLayoutMode:1悬浮 2屏幕分享 3九宫格 4自定义(见文档「合流录制的布局模式」)
|
||
'recording_mix_layout_mode' => (int)env('trtc.recording_mix_layout_mode', 3),
|
||
|
||
// 合流输出分辨率(MixTranscodeParams.VideoParams),横屏问诊建议 1280x720
|
||
'recording_mix_width' => (int)env('trtc.recording_mix_width', 1280),
|
||
'recording_mix_height' => (int)env('trtc.recording_mix_height', 720),
|
||
'recording_mix_fps' => (int)env('trtc.recording_mix_fps', 15),
|
||
'recording_mix_video_bitrate' => (int)env('trtc.recording_mix_video_bitrate', 1500000),
|
||
'recording_mix_gop' => (int)env('trtc.recording_mix_gop', 2),
|
||
// AudioParams:SampleRate 1=48000Hz 2=44100 3=16000;Channel 1单 2双;BitRate 32000-128000
|
||
'recording_mix_audio_sample_rate' => (int)env('trtc.recording_mix_audio_sample_rate', 1),
|
||
'recording_mix_audio_channel' => (int)env('trtc.recording_mix_audio_channel', 2),
|
||
'recording_mix_audio_bitrate' => (int)env('trtc.recording_mix_audio_bitrate', 64000),
|
||
|
||
// 房间内无上行超过该秒数自动停录(RecordParams.MaxIdleTime)
|
||
'recording_max_idle_time' => (int)env('trtc.recording_max_idle_time', 5),
|
||
|
||
// RecordParams.OutputFormat(仅 COS 存储生效):0=hls(默认 SDK 行为)、1=hls+mp4、3=mp4、4=aac
|
||
// 需要收到 310(MP4上传完成) 回调必须设为 1 或 3;若只用 hls(0) 则仅有 305/307 回调,无 MP4 文件
|
||
'recording_output_format' => (int)env('trtc.recording_output_format', 3),
|
||
|
||
// COS 对象存储(关闭控制台全局录制后,API 录制仅存 COS 时必填 bucket)
|
||
// AccessKey/SecretKey 留空 → 自动复用上方 api_secret_id / api_secret_key(同账号下推荐留空)
|
||
'recording_cos_vendor' => (int)env('trtc.recording_cos_vendor', 0),
|
||
'recording_cos_region' => env('trtc.recording_cos_region', ''),
|
||
'recording_cos_bucket' => env('trtc.recording_cos_bucket', ''),
|
||
'recording_cos_access_key' => env('trtc.recording_cos_access_key', ''),
|
||
'recording_cos_secret_key' => env('trtc.recording_cos_secret_key', ''),
|
||
'recording_cos_prefix' => env('trtc.recording_cos_prefix', 'trtc-recording'),
|
||
|
||
// 云点播子应用 SubAppId(TencentVod),默认不填使用主应用
|
||
'recording_vod_sub_app_id' => (int)env('trtc.recording_vod_sub_app_id', 0),
|
||
|
||
// 录制机器人 UserId 前缀
|
||
'recording_bot_prefix' => env('trtc.recording_bot_prefix', 'recorder_'),
|
||
|
||
// 是否把回调中的录制文件下载到本服务器 uploads 目录(再写入 recording_urls)
|
||
'recording_mirror_to_storage' => (int)env('trtc.recording_mirror_to_storage', 0),
|
||
];
|