2013-02-01 3 views
13

私のアプリはHLSを使ってサーバーからビデオをストリーミングしますが、サーバーからHLSストリームを要求すると、デバイスが処理できる最大ビデオビットレートを渡す必要があります。 Android API guidesでは、「デバイスの利用可能なビデオ録画プロファイルをメディア再生機能のプロキシとして使うことができる」と言われていますが、デバイスの背面カメラに対応するvideoBitRateを取得しようとすると、常に12Mb/s 3つの異なるGPU(PowerVR SGX540、Mali-400 MP、Tegra 250 T20)を持っているにもかかわらず、デバイス(Galaxy Nexus、Galaxy Tab Plus 7 "、Galaxy Tab 8.9)を使用しています。AndroidデバイスのCamcorderProfile.videoBitRateを取得するには?

CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); 
targetVideoBitRate = camcorderProfile.videoBitRate; 

私はギャラクシータブプラスでこれをしようとすると:それは事実にもかかわらず、Trueを返し

boolean hasProfile = CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_HIGH); 

そのQUALITY_HIGH 1080p録音用で、仕様は720pでしか録音できないと言います。

+6

アンドロイドOSで起動される携帯電話は、そのような値を提供する必要があります。時々、ブランドはそのフィールドにいくつかのランダムな価値を置くだけです。 10度のような値を置くカメラの視野角を取得しようとすると、同様の問題に直面しましたが、これは不可能です。おそらく同じ問題があります。彼らはたわごとを与えません。彼らはちょうど市場にスマートフォンを置きたいとプログラマーを気にしない –

答えて

7

私自身の質問に対する答えを見つけたようです。

私はdocumentationを十分に読まなかったし、QUALITY_HIGHは1080pと同等ではありませんでした。これは単にデバイスがサポートする最高品質のプロファイルを指定する方法です。したがって、定義により、CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_HIGH)は常に真です。私のデバイスのほとんどは、まだしかし、私はソニーExperiaティポ(私のローエンド・テスト・デバイス上でこのコードを実行し、私は懐疑的だこれは、1080pのエンコーディングのサポートを報告している

public enum mVideoQuality { 
    FullHD, HD, SD 
} 
mVideoQuality mMaxVideoQuality; 
int mTargetVideoBitRate; 

private void initVideoQuality { 
    if (CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_1080P)) { 
     mMaxVideoQuality = mVideoQuality.FullHD; 
    } else if (CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_720P)) { 
     mMaxVideoQuality = mVideoQuality.HD; 
    } else { 
     mMaxVideoQuality = mVideoQuality.SD; 
    } 
    CamcorderProfile cProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); 
    mTargetVideoBitRate = cProfile.videoBitRate; 
} 

:私はこのような何かを書かれている必要があります)、720p/sのvideoBitRateで480pの最大エンコード品質が報告されました。

すべてのデバイスを信頼できるかどうかはわかりませんが、720Kb/sから17Mb/sまでのビデオビットレートと480p〜1080pのプロファイル品質を見てきました。うまくいけば、この情報は他の人にも役立つでしょう。

+0

私の答えを改善するための提案があればコメントを残してください。 –

+0

完全公開:adogdenと私は同じチームで働いています。私はこの迷惑な問題を乗り越えるために、この質問に恩恵を与えました。それはおそらくもう一度見てこの有益な答えを書くadogdenを促した。彼は賞金を得て、私はそれを譲渡する意思なしに彼に授与しています。 –

関連する問題