私は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();
}