You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg实现RTSP流按需转码:非H264转码,H264直接复制

FFmpeg 适配RTSP转HLS的动态编码命令方案

针对100路RTSP转HLS的需求,兼顾H264流直接复制、非H264流(如HEVC)转码的FFmpeg命令及无Shell环境适配方案如下:

核心命令

ffmpeg -i rtsp://摄像头RTSP地址 -c:v copy -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k -f hls -hls_time 2 -hls_list_size 10 -hls_flags delete_segments 输出路径/playlist.m3u8

参数说明

  • -i rtsp://摄像头RTSP地址:指定输入RTSP流地址
  • -c:v copy:优先直接复制视频帧,仅当输入为H264编码时生效;非H264编码时自动 fallback 到下一个编码参数
  • -c:v libx264 -crf 23 -preset medium:输入为非H264编码时,调用libx264转码为H264。crf 23为默认画质基准值,preset medium平衡编码速度与文件体积
  • -c:a aac -b:a 128k:统一将音频转码为HLS兼容的AAC格式,码率128k
  • -f hls -hls_time 2 -hls_list_size 10 -hls_flags delete_segments:输出HLS格式,切片时长2秒,保留最近10个切片,自动删除旧切片以控制磁盘占用

无Shell环境适配(Python/Node.js)

在无Shell模式下,需将命令拆分为参数数组,避免Shell解析问题:

Python 示例

import subprocess

# 替换为实际摄像头地址和输出路径
camera_rtsp = "rtsp://your-camera-url"
output_hls = "/path/to/output/playlist.m3u8"

cmd = [
    "ffmpeg",
    "-i", camera_rtsp,
    "-c:v", "copy",
    "-c:v", "libx264",
    "-crf", "23",
    "-preset", "medium",
    "-c:a", "aac",
    "-b:a", "128k",
    "-f", "hls",
    "-hls_time", "2",
    "-hls_list_size", "10",
    "-hls_flags", "delete_segments",
    output_hls
]

subprocess.run(cmd, check=True, capture_output=True)

Node.js 示例

const { spawn } = require("child_process");

// 替换为实际摄像头地址和输出路径
const cameraRtsp = "rtsp://your-camera-url";
const outputHls = "/path/to/output/playlist.m3u8";

const ffmpegProcess = spawn("ffmpeg", [
    "-i", cameraRtsp,
    "-c:v", "copy",
    "-c:v", "libx264",
    "-crf", "23",
    "-preset", "medium",
    "-c:a", "aac",
    "-b:a", "128k",
    "-f", "hls",
    "-hls_time", "2",
    "-hls_list_size", "10",
    "-hls_flags", "delete_segments",
    outputHls
]);

// 可选:捕获日志输出
ffmpegProcess.stderr.on("data", (data) => {
    console.error(`FFmpeg日志: ${data.toString()}`);
});

ffmpegProcess.on("close", (code) => {
    console.log(`FFmpeg进程退出,码值: ${code}`);
});

批量处理注意事项

  • 100路流需单独启动FFmpeg进程,避免单进程负载过高导致卡顿
  • 可根据服务器CPU性能调整preset参数:fast编码速度更快,slow画质更优但编码耗时更长
  • 若部分摄像头无音频,可添加-an参数禁用音频输出

内容的提问来源于stack exchange,提问作者Logically Invalid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:55:18