如何解压audio.aecdump?

时间:2015-12-17 15:37:37

标签: google-chrome webrtc

我有来自chrome:// webrtc-internals的转储,我想解压缩它。我怎么能这样做?我知道我可以使用unpack_aecdump但我在哪里可以找到它?

2 个答案:

答案 0 :(得分:1)

获取unpack_aecdump

您需要unpack_aecdump,您可以按照以下方式获取:

  1. 按照https://webrtc.org/native-code/development/
  2. 上的说明设置WebRTC开发环境
  3. 获得存储库后(在完成gclient sync之后),创建构建目录:

    gn gen out/Release --args='is_component_build=false'
    
  4. 最后,构建可执行文件(有关源代码,请参阅unpack.cc,有关构建标志和依赖项,请参阅build.GN

    ninja -C out/Release/ unpack_aecdump
    
  5. is_component_build=false标志确保“unpack_aecdump”二进制文件可以单独使用。如果省略该标志,则默认情况下会打开组件构建(正如您在运行gn args out/Release --list而没有args之后可以从gn gen out/Release看到)。在这种情况下,库与主二进制文件分离,如果要与其他文件共享二进制文件(不仅仅是“unpack_aecdump”而且还有“libprotobuf_lite.so”),则需要复制多个文件。

    执行上述步骤后,我的存储库的总大小为7 Gb。存储库大约1Gb,外部依赖大约5.5Gb,构建工件大约0.5Gb。前两个步骤可能需要一段时间,尤其是在糟糕的网络上。实际构建步骤在一分钟内完成。二进制本身只有3MB。

    (使用https://chromium.googlesource.com/external/webrtc.git/+/0e3213a18ceceb325f5b679f6eea7aff12059960测试)

    使用unpack_aecdump

    构建unpack_aecdump后,我将其复制到其他位置并按如下方式使用:

    ./unpack_aecdump audio_debug.4440.aec_dump.1
    

    下面的第一行是输入文件,其他是输出文件(前面的文件大小,以字节为单位)。 如果输出文件已存在,则会覆盖

    163865593 audio_debug.4440.aec_dump.1
          643 settings.txt
     39862916 reverse0.wav
     21696044 ref_out0.wav
     19933244 input0.wav
    

    请注意input0.wavaudio_debug.4440.source_input.1.wav完全相同,我也是chrome://webrtc-internalsaecdump文件一起提供的文件。

    这些文件的含义也在https://groups.google.com/d/msg/discuss-webrtc/NxPHdEAyU9k/QcH-DkVtD6oJ中解释:

      
        
    • reverse.pcm:从网络接收的音频,绑定进行渲染。
    •   
    • input.pcm:音频处理前捕获的音频。
    •   
    • ref_out.pcm:音频处理后捕获的音频绑定到网络。
    •   

    可以自定义输出格式(包括文件名),请参阅the source code--help

    $ ./unpack_aecdump --help
     ( ... )
      Flags from ../../webrtc/modules/audio_processing/test/unpack.cc:
        -delay_file (The name of the delay file.) type: string
          default: "delay.int32"
        -drift_file (The name of the drift file.) type: string
          default: "drift.int32"
        -full (Unpack the full set of files (normally not needed).) type: bool
          default: false
        -input_file (The name of the input stream file.) type: string
          default: "input"
        -keypress_file (The name of the keypress file.) type: string
          default: "keypress.bool"
        -level_file (The name of the level file.) type: string
          default: "level.int32"
        -output_file (The name of the reference output stream file.) type: string
          default: "ref_out"
        -raw (Write raw data instead of a WAV file.) type: bool default: false
        -reverse_file (The name of the reverse input stream file.) type: string
          default: "reverse"
        -settings_file (The name of the settings file.) type: string
          default: "settings.txt"
        -text (Write non-audio files as text files instead of binary files.)
          type: bool default: false
    

答案 1 :(得分:0)

使用 unpack_aecdump (如果编译所有目标,它应该在out / Debug或out / Release。)来解压缩AEC调试转储。

解包结果:

reverse.pcm:从网络接收的音频,绑定进行渲染。

在音频处理之前,

input.pcm:捕获的音频。

ref_out.pcm:音频处理后捕获的音频绑定到网络。

通常pcm文件是16位线性的,通常是单声道,采样率为16 kHz,但请检查在使用解包实用程序时可能创建的settings.txt。然后可以在任何音频编辑器中打开文件进行分析。

了解更多信息:Check discuss-webrtc post