Javaのビデオ録画
-
AndroidのMプラットフォームでは、例外が存在します
java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil
。この問題に対応する問題に
https://github.com/bytedeco/javacv/issues/245
https://github.com/bytedeco/javacv/issues/579
私のソリューションがにありますこの記事で見つかったが、あまりにも多くの人々の問題が発生し、問題の原因は、バージョン、プラットフォームとして、よりになります。私は、Android Mの次のバージョンではこのような状況は、正常であり、それはjavacvエディションとパッケージングの問題ではありませんが発生しました。
最終的によりReLinker解決
これは予想外で、彼は前に決して言わなかったと思ったSystem.loadLibrary("")
信頼できないことが、唯一の置き換えうReLinker.recursively().loadLibrary()
問題が解決され、。 -
パラメータ設定時に記録
の初期化パラメータフレーム:
private int frameDepth = Frame.DEPTH_UBYTE; //DEPTH_UBYTE=8 private int frameChannels = 2;
記録中のデータの形式を指定する必要があるのでFFmpegFrameRecorderは、多くの記録フォーマットをサポートし、これらのフォーマットは、で定義されているorg.bytedeco.javacpp.avutil.AV_PIX_FMT_XXX
、とカメラのプレビューコールバックYUVフォーマットならば、あなただけのデフォルトを使用する必要があります。あなたはRGBAを指定する必要がある場合はmVideoRecorder.record(mFrameData, AV_PIX_FMT_RGBA);
カメラのプレビューのビデオプレビューサイズと混乱録画サイズに注意を払う必要性に、特に幅と高さを記録するときに問題を逆転させました。
- javacvライブラリは比較的大きいので、統合の道をGradleのしようとしないでください
- 時間のかかる録音
記録540 * 960のビデオは、60ミリ秒ほどかかりますが、このパフォーマンスは受け入れることが少ないことができたので、記録のために別のスレッドを使用しようとしています。