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

如何在Python中使用FFmpeg录制RTSP流的分段10秒音频

实现RTSP音频每10秒分段保存

1. 单段10秒音频录制方法

要仅录制RTSP流的前10秒音频,只需在FFmpeg的输出参数中添加t=10(指定录制时长),代码示例:

import ffmpeg

# 录制从连接时刻开始的10秒音频
ffmpeg.input("rtsp://john:<pwd>@192.168.10.111:5545/Streaming/Channels/291/").output(
    "test_0000.wav",
    map="0:a:0",
    t=10  # 核心参数:限制录制时长为10秒
).run()

执行后FFmpeg会自动录制10秒音频,完成后进程退出,生成目标文件。

2. 循环分段录制(按你的线程调度计划)

如果坚持用“每10秒启动新线程录制10秒”的方案,可通过线程+定时循环实现,同时生成递增文件名避免覆盖:

import ffmpeg
import threading
import time
import os

RTSP_URL = "rtsp://john:<pwd>@192.168.10.111:5545/Streaming/Channels/291/"
OUTPUT_FOLDER = "./audio_segments"
SECOND_PER_CLIP = 10
file_index = 0

# 创建输出目录
os.makedirs(OUTPUT_FOLDER, exist_ok=True)

def record_single_clip():
    global file_index
    clip_name = os.path.join(OUTPUT_FOLDER, f"audio_{file_index:04d}.wav")
    try:
        ffmpeg.input(RTSP_URL).output(
            clip_name,
            map="0:a:0",
            t=SECOND_PER_CLIP
        ).run(capture_stdout=True, capture_stderr=True)
        print(f"已生成片段: {clip_name}")
        file_index += 1
    except Exception as e:
        print(f"片段录制失败: {str(e)}")

if __name__ == "__main__":
    try:
        while True:
            # 启动新线程执行录制任务
            thread = threading.Thread(target=record_single_clip)
            thread.start()
            # 等待10秒后启动下一段录制
            time.sleep(SECOND_PER_CLIP)
    except KeyboardInterrupt:
        print("脚本已终止")

注意:这种方式每次重启FFmpeg连接RTSP流,可能导致片段间存在短暂间隙,且频繁连接可能增加摄像头负载。

3. 更优方案:用FFmpeg原生分段功能

推荐使用FFmpeg内置的segment分段模块,单个进程持续处理流,自动每10秒生成新文件,无连接间隙,效率更高:

import ffmpeg

RTSP_URL = "rtsp://john:<pwd>@192.168.10.111:5545/Streaming/Channels/291/"
OUTPUT_PATTERN = "./audio_segments/audio_%04d.wav"

try:
    ffmpeg.input(RTSP_URL).output(
        OUTPUT_PATTERN,
        map="0:a:0",
        f="segment",          # 启用分段输出模式
        segment_time=10,      # 每段时长10秒
        reset_timestamps=1    # 每个分段重置时间戳为0,保证播放正常
    ).run()
except KeyboardInterrupt:
    print("录制已停止")

这种方式无需手动管理线程和定时,由FFmpeg内部处理流的分割逻辑,稳定性和流畅度更好。

内容的提问来源于stack exchange,提问作者S Andrew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:10:15