GoogleのAPI MediaCodeCは、オープンソースエンコーダX264と使用シナリオを成熟の開発、アプリケーションと比較にAndroidのオーディオおよびビデオ

シンプルなので、あなたが開発者であれば、私は、リアルタイムのオーディオおよびビデオのプレビューで深い感情が、もちろん、これはライブ画面を開くことが普通の開いていない、終了されるだろうしているように、2019年における大規模なプロジェクトでは、機能モジュールがありますその後、あなたは絵の確か同じ大きさのために知って、ピクセルカラフルな絵は確かに単調な色のピクセルは、ますます高度化に関するものよりもされるように画像内の冗長データを計算するためのアルゴリズムをコーディングするマクロ、に対処する確かに、より良い単調よりも複雑な豊かな色彩は、規定の原則を設定していない、興味は一瞬、イントラ予測映像符号化理論のジュニアパートナーに行くというようにすることができます。

需要は、車両のリアルタイムプレビューでバックグラウンドで監視プラットフォームの前と後の2ウェイカメラ機器で同時にオープン二つのカメラ、リアルタイムでスピーキングとリスニングに運ぶことができる、あまりにもこのプロジェクトでは、ビデオの品質も要求され、非常に高いです少なくとも予想1〜2M / sのビットレート以上、ここでライブソフトウェアのニーズと共通の部屋のいくつかの違いについて教えてください。

私は理由など、これらの青い空、白い雲、緑の木々 、通行車両、せずに、普通の部屋、部屋内の通常のライブこのカテゴリを生きましょう、それは、絵は非常に単一で撮影し、一般的にアンカーのみであるためアクティビティ、他のものは比較的静的であり、冗長フレームは、データは非常に高速であり、負ならば、フレーム自体の品質が、わずかに速く天然の処理速度が比較的小さいので、カラー複雑さは、高くないこの環境で計算されますネットワークの問題は、彼らは確かに、もちろん、ブルーレイ画質を見た場合、それはまた、ネットワークに非常に依存する、アクションに実際の近くを遅らせます。

それから私は、ケース内のプロジェクトのプレビューは、すべての最初の私たちは、想像すべきで言っ車確かに、多くの場合、でこぼこと広角カメラ撮影した画像は、非常に大きいされているプロセスでは車、他のすべての静止物体理由相対運動、例えば雲、建物、車両が通過するように歩行者データの単一フレームの品質につながっ等は、非常に高く、色レベルが非常に複雑であり、それらが表す処理が変装複数のマシンを消費しますパフォーマンスと時間は、テストエンジニア自身のスキルレベルになります品質に対する厳しい要求、実際の需要のレベルに到達するためには、存在する場合、また、マシンのテスト、ハードウェアの性能となります。

最初に私が使用した時MediaCodeCに基づいてハードコードされたが、MT8735チップ、中に単一のオープン方法のみ到達1000kpb /秒、屋内大きな問題を実行している、絵が非常に滑らかであり、画質は大丈夫、その後、道路の実際の負荷に行くですランは、長い結果がバンプまたは交互太陽と暗い場所によって車がスーパーマルチモザイクである、ようとしてその増加率は本当の効果がありません、これはハードコーディングされたMediaCodeCピットである、それは小さなパートナーとして、後に導入されますレートの増加だけでなく、効果がない、そして実際に絵カードとなっている、単一の道この道の後、一人で2直接開いた道を聞かせて。

私はそうX264、オープンソースのエンコーダコードの公式ウェブサイトをダウンロードする単純なAPIに精通ビット、私はC ++の基礎を持っているので、全体のプロセスは非常に、滑らかた私も正常にコンパイル良いライブラリを置く、とからなるよう、私は、始めるために始めるNDK C ++でインタフェースは、スルー輝い。使用X264は、ソフトケースを開くと同時に、効果は非常に明白ですが、個人的な感情大丈夫ずっと開いて双方向の割合の増加をコーディング揚げされます!私が使うので、CPUがチェックされ、このソフトコード化されたX264の消費性能が異常で見つけ、その後、私はチップ上の次のMT性能を確認するために行ってきました、MTは、リアルタイムメディアの要件のこのタイプのための特別なオファーを発見したようだより高いチップ、MT8665ため価格のチップは、同社はそれを促進し、主にこの1でビデオカードの上に、何の大きな問題を持っていない、ほぼすべてのプロジェクト全体、その後、何も言いませんでした。

個人的な感情、通常のチップが、これは非常にもつれた問題であるので、それはさておき2を残し、高ビデオ品質を必要とし、このような高い性能要件、特に要件とも地方自治体与えられているこのプロジェクトの基準を満たすことができません処理動作をチャネル符号化映像、それはどのようなホットマシンはおろか、かなりコストパフォーマンスです。プロジェクトは、デッドロックに入っているが、彼らはまた、作業環境を変更する意図を持って、私はそれはあなたがボトムを持っているので、同様の問題を持つ小さなパートナーに共有への経験を書きませんので、間違っているものの、フォローアップにつながることだと思いますより多くの人材と資源を費やします!遊びに純粋な手のこの部分では、と私はよく書かれたと感じた場合、どのようなオリジナル作品賞賛のサポートを与えます

 

1.はじめソース

まずMediaCodeCで簡単に見て、オープンソースのエンコーダX264

MediaCodeCによって GoogleのAndroid 4.1、API16のバージョンがデビュー

X264 チームの10人のメンバーについてX264 2003年に立ち上げたが、開発の数年後、x264のは徐々に最高のビデオエンコーダになります

 

2.パラメータ説明

いくつかの一般的に使用されるハードコードされたパラメータMediaCodeC

MediaFormat.KEY_BIT_RATE                         率

MediaFormat.KEY_FRAME_RATE                 フレームレート

MediaFormat.KEY_COLOR_FORMATの           入力フォーマット

MediaFormat.KEY_I_FRAME_INTERVAL    キーフレーム間隔

MediaFormat.KEY_BITRATE_MODEの             レートモード(MT8735には実用的な効果)

MediaFormat.KEY_PROFILEの                           ビデオ品質(KEYは個人的には、この役に立たない、多くの質問を考えて、特定の理由で戻ってきます)

MediaFormat.KEY_LEVEL                               ビデオの複雑さ、ビットレート、解像度等の相対値が高くなる大きく

 

いくつかの一般的なソフトコード化されたパラメータX264

b_repeat_headers                                              0ことなく、各キーフレームの前にSPS / PPSを追加するかどうか、プラス1

b_sliced_threads                                                平行またはスライスエンコード、1枚のフレームの画像を、複数の断片に切断され、並列符号化されたスレッドを自動的に計算0 x264のです

i_width                                                                  符号化された出力画像の解像度幅

i_heightは、                                                                高解像度の出力画面をコード

i_bitrate                                                                出力ビデオビットレート

i_rc_method                                                        モードが選択されたレート、ABRモード(平均レート)、CQP(一定量)、CRF(CBR)

i_fps_num                                                            ビデオフレームレートの分子

i_fps_den                                                             ビデオフレームレートの分母

i_keyint_max                                                       GOP 48であるGOP、*フレーム間隔分子、2SはIフレーム、フレーム24を想定し、キービデオフレームレート、

i_threads                                                             スレッドの数、デフォルト番号i_threads = x264_cpu_num_processors()*(H-コーディング

b_vfr_input                                                           ABRモード(平均レート)放出速度が設定されていない場合、この値は0に設定されています

i_qp_constant                                                     CQPモード(一定の質量)を、0は可逆圧縮を表し、QP値が小さい良好コード品質、デフォルト23であります

f_rf_constant                                                       CRFモード(固定ビットレート)、大きな花の画像の値、シャープ小さい値を

f_rf_constant_max                                             CRFモード(固定ビットレート)、最大一定のビットレート

 

3.関数の記述方法

MediaCodeCは、一般的な方法をハードコード

getInputBuffersは、                                                   入力バッファを取得します

getOutputBuffersは                                                、出力バッファを取得します

dequeueInputBufferは                                           入力インデックスから有効なデータを取得するバッファ、この方法は、異なる性能デバイスの同一または異なる値、特に問題です

queueInputBufferの                                               キューの長さの特定のパラメータを渡し、入力バッファへのオフセット

dequeueOutputBufferは                                        、インデックス出力バッファから有効なデータを取得します

releaseOutputBuffer                                          解除出力バッファ

 

一般的に使用される機能のX264のソフトコード化されたプレゼンテーション

x264_param_default_presetは                            X264エンコーダ曲、ライブ、デフォルトのフィルzerolatencyの8種の合計を設定します

x264_param_apply_profileは、                              複数の品質X264エンコーダ、実際のプロジェクトベースライン、メイン、高い使用を設定しました

x264_encoder_open                                         オープンX264エンコーダ

x264_encoder_encode                                     エンコード

x264_encoder_close                                        近いX264エンコーダを

 

4.単純な比較デメリット

ハードコードの利点MediaCodeC:使用に非常に便利なGoogleがパッケージ化された既製のインターフェイスを品質およびプロセスライブデータがゆったりと需要減することができために遅延が比較的低いしきい値要件です

ハードコードされた欠点MediaCodeC:APIの使用異なるハードウェア上の同じ点、チップの相性が悪い、のすべての種類があるだろう奇妙な質問アウトバースト大幅開発の難しさを増加したが、また彼の示した貧しい移植を

X264ソフトコード化された利点:同じコードが異なるチップ上に配置することができ、映像の品質のために、開発後期のコストを削減し、アンドロイドを使用してパラメータを制御するのに効果的なことができ、保守、およびコードの一組だけは非常にいいです、ポータブル非常に強いです

X264用ソフトコード化された短所:初心者のためにあまりにも難しい始めるそれは理解することは多くの時間を要し、特定の機能や変数の使用、見た目のAPIも、時間の読み取りの多くを費やす必要がどこCPUに依存して操作をコードすることが高強度の操作であれば、原因となるマシンの消費電力を大幅に増加され、機械が熱くなりますなど、

 

ステップピットの実用化

私たちはMediaCodeCについて、ハードコードされた話をしましょう、このAPIは、Googleが行う必要があると思われるが行われているが、現実には不十分である、なぜあなたがそう言うのですか?使用済みの少しの友人がどのくらいバージョン10にピット内、そして今もAndroidの知っているいくつかの出ているので、私はまだ、これらの問題を推測が存在し、複雑Androidのモデルので、非常に多くの小さなパートナーが機械に訴え問題はないが、他のマシンに直接クラッシュに。dequeueInputBufferにこの方法を取る、私はそれはいくつかのピットだったと思いますか?私は一般的なビデオ品質を考えて、それからAPIを見て、見つかった私は高に品質設定を入れてMediaFormat.KEY_PROFILEは、ビデオの品質を制御することができ、全く使用は認められなかった、私はこれはピットの父の商品であることを発見し、統計を見て、Android7.0次のデフォルトベースライン、彼はより7.0マシンを持って、あなたが無駄に、デフォルトのベースラインです設定どんなには、なぜ増加率は、前述された本当の効果はありませんそれは私が完全にFFMPEG H264は、ライブラリーをコードするので、私は直接見て見つけるつもりので、その後、最終的にチューンX264、X264、これらおよび他の成熟したオープンソースエンコーダX264、FFMPEG、openH264になってハードコードされたMediaCodeCを、あきらめます。

使用X264はまた、非常に、滑らかなソースコードのクローン後、私は3 X264コンパイラコマンドシェルスクリプトコンパイラアーキテクチャのサポートに基づいて書き込み、arm64-v8a、armeabi-v7a、あるあるのx86 アーキテクチャ3、その後、ソースコード一緒に私のLinuxサーバーへのパッケージ化スクリプトの後、NDKでコンパイルされたプラグインをインストールし、静的ライブラリの三点アーキテクチャをコンパイルするためのスクリプトを実行した後、Androidstudioコレクションはコンパイルされてなるようにコピーは、完璧なパスです。私は再びライブラリので、コンパイルせずにデバッグするときに従うために、NDKからを通じて、関連するすべての符号化パラメータの輝きを置きます。著者ピットについてX264は一つだけに会った、頻繁にスイッチがコンパイラは記憶障害のタイムリーな回復ではありません原因となる特定の変数が回復された、他の論理ブロックは、まだエラーが発生し、それへの参照を保持するため、NDKマシンを直接につながるANR最後に、この問題を回避するために一時停止するのに最適なインタフェースを介して、小さなパートナーの問題がある見ることがあり、私はすべての時間にの12時間を測定しているため、オープン空白の画面に長い時間を生きるだろう、私は、この前に会ったことがなかったと言いますオープン。

 

6.推奨開始します

私は個人的に、すべての後に、H264は、コーディングの兄であるので、私は、X264を開始することをお勧めして開始する必要性を感じて!あなたが遊びに精通しているので、それはない香りまあですオープンソースX264の開発や二次開発では、ライブのオーディオおよびビデオ体験であり、あなたの履歴書上、面接への書き込みを行って、それは本当に余分なポイントがたくさんありますあなたはまた、サイドノートを持つことができる楽しいこのため、あなたは間違いなくあなたのためのボーナスアイテムの数が増加します、開発経験をNDK、プラス現在のホットビブラートは、巧みな、スイカビデオ、放送、物事の他の種類は、あなたがオーディオとビデオを知っている必要があります今後5年、あるいは10年で非常に重要ですパートナーは小さなC / C ++の基礎ではない場合、より多くの研究へのビデオエントリのこのタイプのは、すべての後に、参照することをお勧めします誰のための時間待ちは、30の上に自分自身を聞かせていない、と彼らは仕事や心配が見つからない場合は、まだのため、転職を探してリーダーシップのない住宅ローン自動車ローンはNOを言うためにあえて

 

7.使用をお勧めします

彼は、あるいはMediaCodeC X264と、最後にそれを使用することを、そんなに言いましたか?実際に、私は、長所と短所のものである以前の答えを、与えられています!それほど厳しい要件のためのライブ画質、我々は時間と労力を節約し、MediaCodeCを使用してエンコードすることができます!ライブ画面の要件が前提の下で比較的高く、力にマシンのパフォーマンス場合は、当然のことながら、大きすぎる、あなたがX264を使用するFFMPEGをお勧めします、そしてその本質はもちろんのエンコードH264コールX246、市場で他の良いエンコーダがあり、見ますどのように小さな自分の好きなパートナー。両方は、椎骨ライブ画面の高標準、無強いハードウェアのパフォーマンスを必要とする場合は、需要のこの種を満たすため、手放す行くようにするとき、あなたはそれが働いて得る、私を信じて!まあ、ショートカットに、道路千万を学び、それは大変な作業です!小さなパートナーに感謝し、これを読むためにありがとう、私を支援してきました!ありがとうございました

 

公開された97元の記事 ウォンの賞賛285 ビュー360 000 +

おすすめ

転載: blog.csdn.net/jspping/article/details/105069374