Files
zyt/server/config/trtc.php
T
2026-05-11 17:49:38 +08:00

91 lines
6.0 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 腾讯云实时音视频(TRTC)配置
*
* 点播列表里若出现多个带「UserId_s_」「UserId_e_」的文件(每用户一路),属于【单流】命名规则,几乎总是控制台
* 「全局自动录制」单流模板;可与 API 合流并存。API 合流文件可在点播搜前缀 mix_{诊单id}_{通话记录id}TencentVod.UserDefineRecordId)。
* 需要【仅合流一个文件】时:请到 实时音视频控制台 → 应用管理 → 录制管理,关闭全局自动录制,仅用 API 触发。
* 关闭全局后若完全没有录制文件,请配置 .env 中 trtc.api_secret_id / trtc.api_secret_keyCAM),并查看 bindCallRoom 接口返回的 cloud_recording.message 或服务端日志。
* 若出现 cURL error 60:将 cacert.pem 放在 server 根目录或配置 recording_ssl_cafilecomposer 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', ''),
// 云 APICAMSecretId / 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.RecordMode1=单流,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.MixLayoutMode1悬浮 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),
// AudioParamsSampleRate 1=48000Hz 2=44100 3=16000Channel 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'),
// 云点播子应用 SubAppIdTencentVod),默认不填使用主应用
'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),
];