libstagefright.so
にアクセスして、ストリームをデコードする方法はありますか?Android 2.3以降のJNI
層からですか?AndroidのJNIlayerからH.264ストリームを直接デコードするためにStageFright.soにアクセスする
答えて
あなたの目的は、基本H.264
ストリームを復号する場合は、コードストリームは、codec-specific-data
は主SPS
とPPS
データとフレームデータのタイムスタンプと一緒にされたコーデックに提供される抽出されることを保証する必要がありますコーデックに提供されます。すべてのAndroid
バージョンでは、最も一般的なインターフェイスはOMXCodec
であり、これは基礎となるOMX
コンポーネントを抽象化したものです。
ジンジャーブレッド(Android 2.3)とICS(Android 4.0.0)では、デコーダを作成する場合は、OMXCodec
コンポーネントを作成し、MediaSource
インターフェイス、つまりラッパーコードこのソースからMediaSource
およびOMXCodec
と表示され、と読み出され、復号化が実行されます。アンドロイド2.3ビデオデコーダの作成に
リンク:http://androidxref.com/2.3.6/xref/frameworks/base/media/libstagefright/AwesomePlayer.cpp#1094は
のAndroidへのリンク4.0.0ビデオデコーダの作成は:
モデル入力:http://androidxref.com/4.0.4/xref/frameworks/base/media/libstagefright/AwesomePlayer.cpp#1474
主な課題は次のようになります
MediaSource
となります。コーデックからバッファを読み取り、同じコードを処理してコーデックに戻すためのラッパーコードを読み取ります。簡略化のため
あなたのプログラムは、以降JellyBean(アンドロイド4.1.xの、4.2.xでは)に基づいている場合、あなたはhttp://androidxref.com/4.0.4/xref/frameworks/base/cmds/stagefright/stagefright.cpp#233
のようにstagefright
コマンドライン実行可能コードを見ることができるが、これらはわずかですより単純化される。あなたのJNIコードから、MediaCodec
コンポーネントを作成し、それをデコードに使用することができます。あなたのプログラムに同じを統合するには、私はAndroid上libstagefrightハードウェアデコードビデオを使用http://androidxref.com/4.2.2_r1/xref/frameworks/av/cmds/stagefright/SimplePlayer.cpp#316
- 1. Androidから直接MySQLにアクセスする
- 2. H.264 RTSPストリームをデコードするライブラリ
- 3. FFMPEG - 一連の画像からH.264ストリーミングMP4を作成するためのコマンドラインパラメータを修正します。
- 4. ストリームから直接圧縮
- 5. 異なるパラメータを持つH.264ストリームをエンコード/デコードする
- 6. ビーグルボーンブラックのVLCでLogitech C525からH.264ビデオをストリーミングできませんか?
- 7. configuration/configSections要素に直接アクセスするためのFCLサポート?
- 8. URLから直接アクセスする方法
- 9. S3から直接MP4ビデオをiPhoneにストリームしますか?
- 10. は、レールコンソールから直接アクセスできるようにする方法を定義するためにどこ
- 11. ストリームを直接Webブラウザに戻す
- 12. MongoDBからMongoDB APIに直接アクセスするには?
- 13. パッケージ内の任意のモジュールからクラスに直接アクセスする
- 14. wifi h.264カメラからiPhoneに直接ライブストリーミング
- 15. これらのh.264パケットのバイナリデータを分析し、それらをデコードするh.264ストリームを整理する方法はffmpegを使用しますか?
- 16. apkから事前に入力したデータベースに直接アクセスするには?
- 17. アンドロイド携帯電話向けH.264からH.263への変換
- 18. WSGI環境から直接クッキーにアクセスする方法
- 19. Safari拡張機能、ツールバーからページ/コンテンツに直接アクセスする?
- 20. VS2008から.NET Reflectorに直接アクセスする方法
- 21. EMRマップ/リダクションタスクから直接S3にアクセスする
- 22. データをコピーせずに直接hdfsにストリームする
- 23. 直接ServiceModelレイヤーにアクセスする
- 24. Cで直接DirectDrawサーフェスメモリにアクセスする
- 25. Xcodeから直接ソースコードをアップロードする4
- 26. リモートURLからユーザーのコンピュータにファイルを直接ダウンロードするためのPHPスクリプト
- 27. cassandraにアクセスするためにクライアントマシンからサーバに接続する方法は?
- 28. AndroidでH.264ライブストリームを受信してデコードする
- 29. FFMPEG:FF33EGを使用して符号化した後にパケットを直接デコードする
- 30. ネイティブのUIコントロールにNativescriptから直接アクセスできる
のようにあなたが
SimplePlayer
実装を参照してください可能性があり、メインはAwesomePlayer.cppを模倣、OMXCodecを呼び出し、それは、Androidの4.0に大丈夫ですが、Androidの4.1にそれは黒い画面です、あなたはいくつかのsuguestを持っていますか? – crossle@CrossleSong 'Android 4.1'すなわち' JellyBean'では、表示パイプラインがいくつかの重要な改善を受けました。さらなる分析のためにいくつかのログを共有していただけますか?私は 'SurfaceTexture'、' HwComposer'と 'Layer'モジュールからのロギングをお勧めします。片側の注意:あなたの '層 'は何らかの理由で安全とマークされていますか? – Ganesh
あなたの答えをありがとう。私はこの問題を解決しました。なぜなら、ANativeWindowの問題です。不足しているnative_window_set_scaling_mode(mNativeWindow.get()、mVideoScalingMode); – crossle