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

如何控制record-audio crate录制时长并停止录制保存音频文件?

解决record-audio 0.1.1的录制时长控制与停止保存问题

针对你使用record-audio = "0.1.1"遇到的录制时长控制、主动停止录制并保存的问题,提供两种解决方案:

1. 固定时长录制

record方法的参数支持传入录制的总帧数,通过时长×采样率计算出帧数即可实现固定时长录制。默认采样率通常为44100,示例代码如下:

use record_audio::audio_clip::{AudioClip as ac, AudioClip};

fn main() {
    record_audio_for_seconds(5); // 录制5秒音频
}

fn record_audio_for_seconds(seconds: u64) {
    let sample_rate = 44100; // 默认采样率
    let total_frames = sample_rate * seconds; // 计算总帧数

    match ac::record(Some(total_frames)) {
        Ok(clip) => {
            println!("录制完成!");
            match clip.export("record_fixed.wav") {
                Ok(_) => println!("音频已保存为record_fixed.wav"),
                Err(err) => println!("保存失败: {}", err),
            }
        }
        Err(err) => println!("录制失败: {}", err),
    }
}

2. 程序主动控制停止录制

如果需要在自定义条件下停止录制(比如用户输入、逻辑触发),可以使用start_recording方法启动非阻塞录制,再调用stop()主动终止录制流程:

use record_audio::audio_clip::{AudioClip as ac, Recorder};
use std::thread;
use std::time::Duration;

fn main() {
    record_and_stop_manually();
}

fn record_and_stop_manually() {
    // 启动非阻塞录制
    let mut recorder = match ac::start_recording() {
        Ok(r) => r,
        Err(err) => {
            println!("启动录制失败: {}", err);
            return;
        }
    };

    println!("录制中...3秒后自动停止");
    // 模拟业务逻辑,这里用睡眠3秒替代
    thread::sleep(Duration::from_secs(3));

    // 主动停止录制并获取音频数据
    let clip = match recorder.stop() {
        Ok(c) => c,
        Err(err) => {
            println!("停止录制失败: {}", err);
            return;
        }
    };

    // 保存音频文件
    match clip.export("record_manual.wav") {
        Ok(_) => println!("音频已保存为record_manual.wav"),
        Err(err) => println!("保存失败: {}", err),
    }
}

注意事项

  • 若你的音频设备采样率不是44100,可通过库的API获取设备实际采样率后再计算帧数,保证时长精准。
  • 原代码中ac::record(None)的逻辑是等待用户按下Enter键停止录制,录制完成后自动进入保存流程。

内容的提问来源于stack exchange,提问作者kcbbcn otfemb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:35:25