银河麒麟系统中使用C#获取电脑音频数据的完整实现代码

以下是在银河麒麟系统中使用C#获取电脑音频数据的完整实现代码,结合Oraycn组件和跨平台技术方案:

一、核心代码实现
csharp
Copy Code
using System;
using Oraycn.LinuxCapture;
using Oraycn.MFile.NetCore;

public class AudioCaptureDemo
{
private AudioCapturer _audioCapturer;
private MFileWriter _mFileWriter;

public void StartCapture(string outputPath)
{
    // 1. 初始化音频采集器
    _audioCapturer = CapturerFactory.CreateAudioCapturer();
    _audioCapturer.BitsPerSample = 16;     // 16位采样深度
    _audioCapturer.SampleRate = 44100;      // 44.1kHz采样率
    _audioCapturer.ChannelCount = 2;       // 立体声:ml-citation{ref="1,4" data="citationList"}
    
    // 2. 初始化MP4文件写入器
    _mFileWriter = new MFileWriter(outputPath, 
        new VideoFormat(),                 // 视频格式(留空仅音频)
        new AudioFormat {
            BitsPerSample = 16,
            SampleRate = 44100,
            ChannelCount = 2
        });                                // 音频格式配置:ml-citation{ref="1" data="citationList"}
    
    // 3. 绑定数据捕获事件
    _audioCapturer.AudioDataCaptured += (sender, e) => 
    {
        // 原始PCM数据写入MP4容器
        _mFileWriter.WriteAudioFrame(e.Data, e.Data.Length);:ml-citation{ref="1,4" data="citationList"}
        
        /* 如需实时处理音频数据:
        float[] samples = new float[e.Data.Length / 2];
        for (int i = 0; i < samples.Length; i++) {
            samples[i] = BitConverter.ToInt16(e.Data, i * 2) / 32768f;
        }
        // 在此添加音频分析逻辑
        */
    };
    
    // 4. 开始采集
    _audioCapturer.Start();
    Console.WriteLine("音频采集已启动...");
}

public void StopCapture()
{
    _audioCapturer?.Stop();
    _mFileWriter?.Close();
    Console.WriteLine("采集已停止,文件已保存");
}

}
二、调用示例
csharp
Copy Code
class Program
{
static void Main()
{
var demo = new AudioCaptureDemo();
demo.StartCapture("/home/user/audio_record.mp4");

    Console.WriteLine("按任意键停止采集...");
    Console.ReadKey();
    
    demo.StopCapture();
}

}
三、关键配置说明
‌依赖部署‌

需将Oraycn.LinuxCapture.so和Oraycn.MFile.NetCore.so放置于/usr/local/lib/目录12
通过export LD_LIBRARY_PATH=/usr/local/lib设置库路径8
‌权限处理‌

bash
Copy Code

添加当前用户到audio用户组

sudo usermod -aG audio $USER

修改ALSA设备权限

sudo chmod 666 /dev/snd/*
‌信创环境验证‌

需确认系统已安装.NET Core 6.0+运行时1
建议使用ldd命令检查动态库依赖完整性8
注:该方案同样适用于统信UOS系统,实际采样率需根据硬件支持情况调整16。如需实时传输音频流,可参考OMCS框架的网络传输实现6

posted @ 2025-04-23 14:57  筑丹期码农  阅读(82)  评论(0)    收藏  举报