first commit

This commit is contained in:
Your Name
2026-09-08 11:40:15 +08:00
commit a5353f7eb5
9568 changed files with 1646214 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
<?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),
];