最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#將國產Linux視頻錄制生成mp4的具體實現

 更新時間:2024年08月21日 09:33:27   作者:!chen  
這篇文章主要介紹了C#將國產Linux視頻錄制生成mp4的具體實現,文中通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下

一.技術方案

要完成這些功能,具體來說,需要解決如下幾個技術問題:

(1)麥克風數據采集。

(2)攝像頭數據采集。

(3)音頻數據編碼。

(4)視頻數據編碼。

(5)將編碼后的數據按.mp4文件格式寫入到文件容器中。

(6)保證音頻視頻播放的同步。

我們使用跨平臺的 C# .NET Core ,跨平臺的UI框架Avalonia,再借助 Oraycn.LinuxCapture 和 Oraycn.MFile.NetCore 這兩個組件,就很容易采集到麥克風和攝像頭的數據,并且將它們編碼寫入到mp4文件中。

我們先看看錄制程序在銀河麒麟上的運行效果:

兩個下拉列表可以選擇要使用的麥克風和攝像頭設備。

點擊“開始”按鈕,麥克風和攝像頭將開始采集數據,并錄制生成mp4文件(在運行目錄下)。

點擊“結束”按鈕,則將完成錄制,此時可以打開生成的mp4文件進行播放。

二.具體實現

(1)ICameraCapturer是攝像頭視頻采集組件;IMicrophoneCapturer是麥克風聲音采集組件。

(2)我們可以通過調用CapturerFactory的CreateXXXX方法來創(chuàng)建對應的采集器實例。

(3)得到采集器實例后,調用Start方法,即可開始采集;調用Stop方法,即停止采集。

(4)采集得到的數據,將通過相應的事件(ImageCaptured、AudioCaptured)暴露出來,我們預定這些事件,即可拿到采集的數據。

(5)將拿到的數據喂給VideoFileMaker,VideoFileMaker就會將其編碼并寫入到mp4文件中。

我們這里列一下核心代碼,完整的代碼大家可以從文末下載源碼進行了解。

創(chuàng)建并啟動采集器:

            //攝像頭采集器
            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();

創(chuàng)建并啟動錄制器:

            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);
    }

三.部署運行

如果要在銀河麒麟或統(tǒng)信UOS上運行這里的錄制程序,則需要現在目標操作系統(tǒng)上安裝.NET Core 3.1。

然后將VS生成目錄下的 netcoreapp3.1 文件夾拷貝到目標電腦上,進入netcoreapp3.1文件夾,打開終端,并在終端中輸入如下命令:

dotnet Oraycn_Avalonias_RecordDemo.Desktop.dll

回車運行后,就會出現前面截圖的UI界面,然后我們就可以錄制麥克風攝像頭了。

到此這篇關于C#將國產Linux視頻錄制生成mp4的具體實現的文章就介紹到這了,更多相關C# Linux視頻生成mp4內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

东光县| 濮阳县| 大庆市| 杭州市| 自贡市| 应城市| 河津市| 楚雄市| 郑州市| 乌鲁木齐县| 沭阳县| 阆中市| 松江区| 简阳市| 浦东新区| 崇文区| 玉门市| 太康县| 青铜峡市| 名山县| 临江市| 夏邑县| 微博| 沙洋县| 册亨县| 天祝| 万盛区| 文山县| 天镇县| 西平县| 玉门市| 迁安市| 阜新市| 陈巴尔虎旗| 台北县| 化隆| 建阳市| 安陆市| 博爱县| 高要市| 宾川县|