转码
转码是 Monibuca 的一个重要功能,允许将视频流转换为不同的编码格式和分辨率。
功能特点
- 支持多种编码格式
- 支持多种分辨率
- 支持码率控制
- 支持帧率控制
- 支持硬件加速
环境要求
转码插件依赖于 FFmpeg 转码引擎,使用前请确保:
- 系统中已正确安装 FFmpeg
- FFmpeg 的执行路径已添加到系统的 PATH 环境变量中
- 可以通过命令行直接运行
ffmpeg -version
来验证安装是否正确
注意:如果 FFmpeg 未正确配置,转码功能将无法正常工作。不同操作系统配置 PATH 环境变量的方法有所不同,请参考相应的系统文档。
使用示例
配置转码规则
以下是一个基于 YAML 格式的转码配置示例:
yaml
transcode:
onpub:
transform:
^live.+: # 使用正则表达式匹配流名称
input:
mode: rtsp # 输入模式
output:
- target: rtmp://localhost/trans/$0/small # 输出目标,$0 表示匹配的流名
conf: -loglevel debug -c:a aac -c:v h264 -vf scale=320:240 # FFmpeg 配置参数
此配置将匹配所有以 "live" 开头的流,并为其创建一个转码输出,分辨率为 320x240。
自定义转码配置
您也可以为特定流设置多个不同的转码配置:
yaml
transcode:
transform:
camera1: # 特定流名称
input:
mode: rtsp
output:
- target: rtmp://localhost/trans/camera1/hd
conf: -c:a aac -c:v h264 -vf scale=1280:720 -b:v 2000k -b:a 128k
- target: rtmp://localhost/trans/camera1/sd
conf: -c:a aac -c:v h264 -vf scale=640:360 -b:v 800k -b:a 64k
通过 API 添加转码规则
http
POST /api/v1/transcode/rules
Content-Type: application/json
{
"streamPath": "camera1",
"transform": {
"input": {
"mode": "rtsp"
},
"output": [
{
"target": "rtmp://localhost/trans/camera1/hd",
"conf": "-c:a aac -c:v h264 -vf scale=1280:720 -b:v 2000k -b:a 128k"
}
]
}
}
注意事项
- 确保硬件资源充足
- 合理设置转码参数
- 注意转码延迟
- 监控系统负载
- 定期检查转码质量
常见问题
- 转码失败
- 检查硬件状态
- 验证转码参数
- 确认输入流正常
- 转码延迟
- 优化转码参数
- 使用硬件加速
- 调整缓冲区大小
- 转码质量
- 检查码率设置
- 验证分辨率
- 确认编码参数