转码 
转码是 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"
            }
        ]
    }
}注意事项 
- 确保硬件资源充足
 - 合理设置转码参数
 - 注意转码延迟
 - 监控系统负载
 - 定期检查转码质量
 
常见问题 
- 转码失败 
- 检查硬件状态
 - 验证转码参数
 - 确认输入流正常
 
 - 转码延迟 
- 优化转码参数
 - 使用硬件加速
 - 调整缓冲区大小
 
 - 转码质量 
- 检查码率设置
 - 验证分辨率
 - 确认编码参数