35

Androidでビデオストリームを表示するように依頼されたプロジェクトがあります。ストリームは生のH.264であり、サーバーに接続しており、サーバーからバイトストリームを受信します。

基本的に、Androidのデコーダーに生のバイトを送信して表面に表示する方法はありますか?

android4.1の新しいMediaCodecとMediaExtractorAPIを使用してmp4コンテナにラップされたH264をデコードすることに成功しましたが、残念ながら、これらのAPIを使用して生のH264ファイルまたはストリームをデコードする方法が見つかりませんでした。

FFmpegをコンパイルして使用する方法があることは理解していますが、ハードウェアアクセラレーションを使用できる組み込みのメソッドを使用したいと思います。また、AndroidでRTSPストリーミングがサポートされていることも理解していますが、これはオプションではありません。Androidのバージョンは問題ではありません。

4

3 に答える 3

0

同様のプロジェクトで役立つリソースを次に示します。

  1. このビデオは、MediaCodec が生の h.264 ストリームを高レベルで処理する方法を理解する上で非常に洞察に満ちています。
  2. このスレッドでは、SPS/PPS NALU の具体的な処理についてもう少し詳しく説明します。前述のように、開始プレフィックスを使用して個々の NAL ユニットを分離し、残りのデータを MediaCodec に渡す必要があります。
  3. このレポ(libstreaming) は、転送に RTSP/RTP を使用して Android で H264 ストリームをデコードする好例です。
于 2017-09-13T18:49:23.743 に答える
0

サーバーから未加工の H.264 をダウンロードし、電話で実行されているローカルの HTTP サーバーを介して提供し、VLC for Android でその HTTP サーバーから再生を行うことができます。VLC の http/h264:// スキームを使用してデマルチプレクサを生の H.264 に強制する必要があります (デマルチプレクサを強制しない場合、HTTP サーバーから返された MIME タイプが正しく設定してください)。見る

https://github.com/rauljim/tgs-android/blob/integrate_record/src/com/tudelft/triblerdroid/first/VideoPlayerActivity.java#L211

VLC を起動するインテントを作成する方法の例については、.

注: 生の H.264 には明らかにタイミング情報がないため、VLC は可能な限り高速に再生します。最初にMPEGTSに埋め込む方が良いでしょう。それを行うAndroidライブラリはまだ見つかりません。

于 2012-11-29T14:48:52.443 に答える