广州建设网站的公司,网站建设需要ui吗,html代码块,网站建设定位分析论文随着信创国产化浪潮的来临#xff0c;在国产操作系统上的应用开发的需求越来越多#xff0c;其中一个就是需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音#xff0c;将它们录制成一个mp4文件。那么这个要如何实现了#xff1f;
一. 技术方案
要完成这些功能在国产操作系统上的应用开发的需求越来越多其中一个就是需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音将它们录制成一个mp4文件。那么这个要如何实现了
一. 技术方案
要完成这些功能具体来说需要解决如下几个技术问题
1麦克风数据采集。
2摄像头数据采集。
3音频数据编码。
4视频数据编码。
5将编码后的数据按.mp4文件格式写入到文件容器中。
6保证音频视频播放的同步。
我们使用跨平台的 .NET Core C#跨平台的UI框架Avalonia再借助 Oraycn.LinuxCapture 和 Oraycn.MFile.NetCore 这两个组件就很容易采集到麦克风和摄像头的数据并且将它们编码写入到mp4文件中。
我们先看看录制程序在银河麒麟上的运行效果 在银河麒麟上运行视频录制程序
两个下拉列表可以选择要使用的麦克风和摄像头设备。
点击“开始”按钮麦克风和摄像头将开始采集数据并录制生成mp4文件在运行目录下。
点击“结束”按钮则将完成录制此时可以打开生成的mp4文件进行播放。
二.具体实现
1ICameraCapturer是摄像头视频采集组件IMicrophoneCapturer是麦克风声音采集组件。
2我们可以通过调用CapturerFactory的CreateXXXX方法来创建对应的采集器实例。
3得到采集器实例后调用Start方法即可开始采集调用Stop方法即停止采集。
4采集得到的数据将通过相应的事件ImageCaptured、AudioCaptured暴露出来我们预定这些事件即可拿到采集的数据。
5将拿到的数据喂给VideoFileMakerVideoFileMaker就会将其编码并写入到mp4文件中。
我们这里列一下核心代码完整的代码大家可以从文末下载源码进行了解。
创建并启动采集器 //摄像头采集器this.cameraCapturer CapturerFactory.CreateCameraCapturer(cameraIndex, videoSize, frameRate);this.cameraCapturer.ImageCaptured CameraCapturer_ImageCaptured;this.cameraCapturer.CaptureError CameraCapturer_CaptureError;//麦克风采集器this.microphoneCapturer CapturerFactory.CreateMicrophoneCapturer(micIndex);this.microphoneCapturer.AudioCaptured MicrophoneCapturer_AudioCaptured;this.microphoneCapturer.CaptureError MicrophoneCapturer_CaptureError;this.microphoneCapturer.Start();this.cameraCapturer.Start();
创建并启动录制器 this.videoFileMaker new VideoFileMaker();this.videoFileMaker.Initialize(test.mp4, VideoCodecType.H264, videoSize.Width, videoSize.Height, frameRate, VideoQuality.High, AudioCodecType.AAC, audioSampleRate, channelCount, true);将采集到的数据喂给录制器 private void CameraCapturer_ImageCaptured(byte[] obj){if (this.isRecording){this.videoFileMaker.AddVideoFrame(obj);}}private void MicrophoneCapturer_AudioCaptured(byte[] obj){if (this.isRecording){this.videoFileMaker.AddAudioFrame(obj);}}
停止录制 private void FinishRecorded(object? sender, Avalonia.Interactivity.RoutedEventArgs e){this.RecordState_Changed(false);this.cameraCapturer?.Stop();this.cameraCapturer?.Dispose();this.microphoneCapturer?.Stop();this.microphoneCapturer?.Dispose();this.videoFileMaker?.Close(true);MessageBox.Show(录制完成, this);}
三. 部署运行
如果要在银河麒麟或统信UOS上运行这里的录制程序则需要现在目标操作系统上安装.NET Core 3.1。
然后将VS生成目录下的 netcoreapp3.1 文件夹拷贝到目标电脑上进入netcoreapp3.1文件夹打开终端并在终端中输入如下命令
dotnet Oraycn_Avalonias_RecordDemo.Desktop.dll
回车运行后就会出现前面截图的UI界面然后我们就可以录制麦克风摄像头了。
四. 源码下载
Oraycn.Avalonias.RecordDemo.rar
源码中包含的非托管库是X64架构的如果需要在其它架构的国产芯片上运行该程序可以联系我获取对应架构的非托管库。