1

私はwiresharkのtsharkとjnetpcapの組み合わせを使用して、オフラインキャプチャをデコードし、ファイルからrtpオーディオペイロードを順方向と逆方向に抽出しています。

最初のステップでは、rtpファイルのみを分離し、それらを追加のファイルに保存します。

次に、jnetpcapを使用してそのファイルをループし、rtpペイロードをファイルに保存します。

両方のチャンネルが必要な場合、作成されたファイルを再生できますが、サンプリングなどが正しく機能しません。少し速すぎます(高すぎます)。したがって、何か別の方法で行う必要があります。

モノラルではなくステレオとして機能するように2チャンネルに保存する方法のヒントを誰かが得ましたか?

final StringBuilder errbuf = new StringBuilder();

    Pcap pcap = Pcap.openOffline(filename, errbuf);

    if(pcap == null) {
        System.err.printf("Error while opening device for capture: " 
                + errbuf.toString());

        return false;
    }

    PcapPacketHandler<String> handler = new PcapPacketHandler<String>() {
        public void nextPacket(PcapPacket packet, String user) {
            System.out.println("size of packet is=" + packet.size());
            Rtp rtp = new Rtp();

            if(packet.hasHeader(rtp)) {
                System.out.println("rtp.headerLength = "+rtp.getHeaderLength()+ "rtp.payloadLength = "+rtp.getPayloadLength());

                try {
                    dos.write(rtp.getPayload());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }


        }
    };

    int ret = pcap.dispatch(-1, handler, "I rock");
    System.out.println("Ret = "+ret);
    try {
        dos.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
4

1 に答える 1

0

この問題の解決策は、RingBuffer をジッターバッファーとして構築し、パッケージを同期して適切な無音生成を行うことです。

于 2012-06-19T07:00:27.473 に答える