gpt4 book ai didi

networking - 使用来自 RTP 流 (PCAP) 的 FFMPEG 解码 G.729

转载 作者:行者123 更新时间:2023-12-04 22:46:47 30 4
gpt4 key购买 nike

我有包含 RTP 数据的 pcap 文件,而 RTP 数据又是 G.729 编解码器的音频。有没有办法通过将它插入 FFMPEG 来解码这个流?这可能意味着我必须从 PCAP 文件中提取 RTP 有效负载数据,然后以某种方式将其传递给 FFMPEG。

任何指导方针和指针都非常感谢!

最佳答案

这不需要 ffmpeg,但我假设您并不真正关心如何提取音频...查看 How to Decode G729在wireshark wiki上...

  • 在 Wireshark 中,使用菜单“Statistics -> RTP -> Show All Streams”。选择所需的流并按“分析”。
  • 在下一个对话框屏幕中,按“Save Payload...”。保存选项为 Format = .raw 和 Channel = forward。将文件命名为 sample.raw。
  • 使用 Open G.729 解码器将 .raw 文件转换为 .pcm 格式。语法:va_g729_decoder.exe sample.raw sample.pcm。或者对于 Linux:wine va_g729_decoder.exe sample.raw sample.pcm。
  • .pcm 文件包含 8000 Hz 的 16 位线性 PCM 样本。请注意,每个样本都是 Little-Endian 格式。要转换为 .au 格式,您只需添加 24 字节的 au header ,并将每个 PCM 样本转换为网络字节顺序(或 Big-Endian)。下面的 Perl 脚本可以解决问题。

  • 用法:perl pcm2au.pl inputFile outputFile

    $usage = "Usage: 'perl $0 <Source PCM File> <Destination AU File>' ";

    $srcFile = shift or die $usage;
    $dstFile = shift or die $usage;

    open(SRCFILE, "$srcFile") or die "Unable to open file: $!\n";
    binmode SRCFILE;

    open(DSTFILE, "> $dstFile") or die "Unable to open file: $!\n";
    binmode DSTFILE;

    ###################################
    # Write the AU header
    ###################################

    print DSTFILE ".snd";

    $foo = pack("CCCC", 0,0,0,24);
    print DSTFILE $foo;

    $foo = pack("CCCC", 0xff,0xff,0xff,0xff);
    print DSTFILE $foo;

    $foo = pack("CCCC", 0,0,0,3);
    print DSTFILE $foo;

    $foo = pack("CCCC", 0,0,0x1f,0x40);
    print DSTFILE $foo;

    $foo = pack("CCCC", 0,0,0,1);
    print DSTFILE $foo;

    #############################
    # swap the PCM samples
    #############################

    while (read(SRCFILE, $inWord, 2) == 2) {

    @bytes = unpack('CC', $inWord);
    $outWord = pack('CC', $bytes[1], $bytes[0]);
    print DSTFILE $outWord;
    }

    close(DSTFILE);
    close(SRCFILE);

    关于networking - 使用来自 RTP 流 (PCAP) 的 FFMPEG 解码 G.729,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7736839/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com