3

MediaCodecffmpeg でエンコードされた h264 パケットをデコードするために使用しています。ffmpeg でデコードすると、フレームは正常に表示されます。ただし、MediaCodecハードウェア デコーダーでデコードすると、フレームの中央に黒いバーが表示されることがあります。これは、エンコーディング ビットレートが十分に高く設定されている場合 (たとえば 4000000 以上) にのみ発生し、特定AVPacketのサイズが 95000 程度を超えるようになります。MediaCodec(または基礎となるデコーダー)がフレームを切り捨てているようです。残念ながら、ビットレートを下げられないほどの品質が必要です。フレームが他の場所で切り捨てられていないことを確認し、MediaFormat.KEY_MAX_INPUT_SIZEより高い値に設定しようとしました.

誰かがこの問題に遭遇したか、それを回避する方法を知っていますか?

OpenGL でレンダリングし、Galaxy S4 でデコードしたランダム ピクセルの画像を添付しました。

忙しい猫

4

1 に答える 1

2

私は問題が何であるかを理解しました。すべてのパケット データを受信するには、受信ソケット バッファを増やす必要がありました。私は Live 555 RTSP クライアントを使用していたので、そのincreaseReceiveBufferTo()機能を使用しました。

于 2013-10-15T20:12:25.987 に答える