私は現在、Xugglerを使用してAR.Droneのビデオストリームを受信しています。ストリーム形式はH.264720pです。次のコードを使用してビデオをデコードして表示できますが、プロセッサの使用率が非常に高く(デュアルコア2GHzで100%)、ストリームに大きな遅延があり、増加し続けています。
final IMediaReader reader = ToolFactory.makeReader("http://192.168.1.1:5555");
reader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
MediaListenerAdapter adapter = new MediaListenerAdapter()
{
public void onVideoPicture(IVideoPictureEvent e)
{
currentframe = e.getImage();
//Draw frame
}
public void onOpenCoder(IOpenCoderEvent e) {
videostreamopened = true;
}
};
reader.addListener(adapter);
while (!stop) {
try {
reader.readPacket();
} catch(RuntimeException re) {
// Errors happen relatively often
}
}
Xugglerサンプルアプリケーションを使用しても問題は解決しないので、私のアプローチは正しいと思います。また、解像度を360pに下げると、ストリームはリアルタイムになり、すべてが正常に機能します。このパフォーマンスの問題が正常であるかどうか、またはこれを回避するために私がしなければならないことを誰かが知っていますか?私はこれにとても慣れていません、そして私は情報を見つけることができませんでした、それで誰か提案がありますか?
ちなみに、ビットレートを変えてみましたがうまくいきませんでした。呼び出しreader.getContainer().getStream(0).getStreamCoder().setBitRate(bitrate);
は無視されているようです...
前もって感謝します!
更新: これらのエラーの多くが発生します:
9593 [Thread-7] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] mmco: unref short failure
39593 [Thread-7] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] number of reference frames (0+2) exceeds max (1; probably corrupt input), discarding one
39593 [Thread-15] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] reference overflow
39593 [Thread-15] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] decode_slice_header error
更新2:コーデックを変更すると上記のエラーは解決されますが、パフォーマンスは依然として低下します。