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. ffmpegをH.264(ハイ4:4:4プロファイル)からH.264(メインプロファイル)に変換する
- 2. Androidから直接MySQLにアクセスする
- 3. ビデオをH.264からH.265に変換する方法
- 4. ビデオをH.264からH.265に変換する方法#
- 5. H.264 RTSPストリームをデコードするライブラリ
- 6. FFMPEG - 一連の画像からH.264ストリーミングMP4を作成するためのコマンドラインパラメータを修正します。
- 7. DropboxからWebページに直接ファイルデータをストリームするには
- 8. 異なるパラメータを持つH.264ストリームをエンコード/デコードする
- 9. ストリームから直接圧縮
- 10. このウェブページにアクセスするための直接リンク
- 11. ビーグルボーンブラックのVLCでLogitech C525からH.264ビデオをストリーミングできませんか?
- 12. configuration/configSections要素に直接アクセスするためのFCLサポート?
- 13. サービスに直接アクセスするためのIstio出口規則
- 14. URLから直接アクセスする方法
- 15. S3から直接MP4ビデオをiPhoneにストリームしますか?
- 16. H.264ビデオソースをWindows.Media.Captureのファイルに直接記録する方法
- 17. は、レールコンソールから直接アクセスできるようにする方法を定義するためにどこ
- 18. 直接アクセスからPHPのURLを保護するには?
- 19. wifi h.264カメラからiPhoneに直接ライブストリーミング
- 20. MongoDBからMongoDB APIに直接アクセスするには?
- 21. パッケージ内の任意のモジュールからクラスに直接アクセスする
- 22. ストリームを直接Webブラウザに戻す
- 23. これらのh.264パケットのバイナリデータを分析し、それらをデコードするh.264ストリームを整理する方法はffmpegを使用しますか?
- 24. グローバルに理解するために、Hファイルとそれらへのアクセス
- 25. ビデオを別のスレッドのテクスチャに直接デコードする
- 26. Androidで直接htmlをデコードする良い方法はありますか?
- 27. USBポートからD +&D-に直接アクセス
- 28. ionic2タイプスクリプトコンポーネントから直接Cordovaプラグインにアクセス
- 29. apkから事前に入力したデータベースに直接アクセスするには?
- 30. WSGI環境から直接クッキーにアクセスする方法
のようにあなたが
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