どのようなオーディオおよびビデオ、ビデオを圧縮するために、なぜ必要?

この列には、大きなシェア知識バットのインタビューを焦点を当てて、フォローアップは、トラブルの懸念をクリックするように、更新していきます

インタビュアー:どのようなオーディオおよびビデオ、ビデオを圧縮するために、なぜ必要

精神分析:倉の先生で、オーディオとビデオの滞在小さな映画の概念上の多くの人々は、彼だけがビデオファイルであることを理解することができます。パッケージ形式では、ビデオとオーディオファイルやビデオファイル内のビデオファイルは、関連はないインタビュアーの開発のコンセプトをテストします

求職者は:最初のビデオファイルから構成開始を説明する必要があり、ゆっくりと深いビデオエンコーディングへ

WebRTC、など、多くの特徴が非常に強い含まれていますなど、オーディオとビデオのキャプチャ、エンコードおよびデコード、トランスミッション、ゲイン、ノイズキャンセル、また、クロスプラットフォームをサポートし、私は使用しましたWebRTC(ノイズ関連のモジュールをダウンロードするにはこちらをクリック)、コードは実際には非常に論理的ですシンプル、ちょうど4つの機能を使用します

1.创建:WebRtcNs_Create
2.初始化:WebRtcNs_Init
3.设置消噪级别:WebRtcNs_set_policy
4.循环取10ms数据,进行消噪处理:WebRtcNs_Process

具体的なコードは次のよう:

書式#include <stdio.hに> 
する#include <stdlib.h>に含ま
書式#include <string.hの> 

の#include "signal_processing_library.h" 
の#include "noise_suppression_x.h" 
の#include "noise_suppression.h" 
の#include "gain_control.h" 

@インタフェースAudioManager()
{ 
    NsHandle * _nshandle。
} 

@end 

@implementation AudioManager 
+(instancetype)sharedInstance { 
    静的IDインスタンス=ゼロ、
    静的dispatch_once_t onceToken。
    dispatch_once(&onceToken、^ { 
        インスタンス= [自己ALLOC] INIT]; 
    }); 
    インスタンスを返します。

 @param品質ノイズキャンセル質量(0,1,2,3)、0最悪の質量、好ましくは3質量
 * / 
+(ボイド)ノイズ除去:(unsigned char型の*)バッファ長:(NSUInteger)長さFS:(NSUInteger) FS品質:(int型)品質{ 
    AudioManager *オーディオ= [AudioManager sharedInstance]; 
    nsHandle * nsHandle = NULL; 
    int型のレベル=品質<0:(品質?> 3. 3:。?品質); 
    IF(オーディオ- > _ nshandle == NULL){ 
        IF){(0 = WebRtcNs_Create(&nsHandle!)
            のNSLog() "のWebRTCの作成に失敗しました" @; 
            リターン; 
        } 
        !IF(0 = WebRtcNs_I​​nit(nsHandle、(のuint32_t)FS)){ 
            のNSLog(@「のWebRTCの初期化に失敗「); 
            を返す;  
        }
        IF(= 0 WebRtcNs_set_policy(nsHandle、レベル!)){
            NSLog( "のWebRTCの設定が失敗する" @); 
            リターン; 
        } 
        オーディオ- > _ nshandle = nsHandle; 
    }他{ 
        nsHandle =オーディオ- > _ nshandle; 
    } 
    のNSLog( "ノイズレベル=%のD"、レベル@); 
    //私たちを16ビットのPCMオーディオデータを、8000Hzのサンプリングレートが、のWebRTCは、10msのデータを処理し、計算値:はsizeof(ショート)* FS / 100、 すなわち、2 * 80 = 160バイトである
    (iは0 = int型のために、私は長さ<; I + =はsizeof(ショート)* FS / 100){ 
        ショートINP [80] = {0}; 
        ショートOUTP [80] = {0}; 
        のmemcpy(INP、緩衝液+ I、80 *はsizeof(ショート) ); 
        IF(0 = WebRtcNs_Process(nsHandle、INP、NULL、OUTP、NULL!)){ 
            のNSLog(@ "ノイズキャンセルが失敗した:%D"、I); 
        }
        memcpy(バッファ+ I、OUTP)、80 *のはsizeof(ショート)。
    } 
}

  

Audacityの解析ソフトウェア

波形図、次のように:

スペクトラム次のように:

私について

詳細については、あなたがクリックすることができます私に  、そして非常にみんなと共有したい、と一般的な進捗状況

おすすめ

転載: www.cnblogs.com/1157760522ch/p/11610135.html