2012-02-15 17 views
3

多重化されたH.264ビデオストリームとAACオーディオストリームを含むMPEG-TS(MPEGトランスポートストリーム)パケットを受信して​​います。私は、Androidの携帯電話でオーディオとビデオを表示できるようにする必要があります。MPEG-TS、AndroidおよびFFMPEG

  • MPEG-TSデマルチプレクサ
  • AACデコーダ
  • H.264デコーダ
  • オーディオおよびビデオ再生を同期

は、私はと仮定すると:私の仮定は、私が必要だということです(Android 2.xでは)MPEG-TSデマルチプレクサはOSの一部ではなく、移植する必要があります.AACとH.264デコーダはAndroid OSの一部ですが、インタフェースがあるかどうかはわかりませんが、バッファ内のデータを渡すことができます。相互タイミング同期。最悪の場合、これらのコンポーネントもここで移植する必要があります。

どこから始めたらいいですか?私はFFMPEGの移植について考えていました。他の方法はありますか?

よろしく、 ステン

答えて

1

あなたはgithubの上アンドロイド - ffmpegのプロジェクトを参照することができます。ジンジャーブレッドで

https://github.com/guardianproject/android-ffmpeg

+0

これを試しましたか?これに関する経験はありますか?使用可能なFFMPEGポートはいくつかあります... – STeN

+0

はい、いくつかの選択肢があります。このプロジェクトは機能しており、試してみました。 – ciphor

1

(2.3)、実際に使用することができstagefrightの枠組みの中でMPEG TSパーサがあります。また、私はそれがH264とAACデコーダと完全に統合されていると信じています。 MPEG TSパーサはどこにでも広告されませんが、サポートは静かにそこに座っています。私は彼らがHCまたはそれ以降のバージョンでApple HTTPライブストリーミングをサポートするためにそれを持ってきたと信じていますが、コードはGingerbread(2.3)コードベースにも座っています。フレームワークにわずかな変更を加えれば、httpライブストリーミング(実際にはTSパケットを送信する)を再生することができます。私は上記の情報があなたに役立つと思います。

VIBGYOR

+0

こんにちは、それは2に移植することができると思いますか?1と2.2も同様ですか?私。 MPEG TSパーサをステージフリーフレームワークから移植し、H.264/AACデコーダと '何らかの形で'接続しますか? – STeN

+0

こんにちは、MPEG TSパーサーコードは、2.3リリースのstagefrightフレームワークに統合されています。それは2.2でそれを移植することは困難ではないかもしれません2.2もstagefrightフレームワークのサポートを持っていましたが、私はstagefrightフレームワークが2.1ではなく、opencoreフレームワークしか持っていないので2.1に移植するのは非常に難しいでしょうそこ。 – Mukesh

+0

Vibgyor、あなたはgingerbreadへのこの小さな修正をmpeg TSのサポートを可能にすることを暗唱しました。あなたはこれを詳述するリンクを持っていますか? – idlethread

2

のAndroid 4.xではH264とAACでTSを再生することができますのOpenMAXがあります。オーディオとビデオの同期についても心配する必要はありません。

NDKのnativemediaサンプルを見てください。

以前のバージョンのAndroidをサポートしたい場合は、ffmpegを選択するのが良いかもしれませんが、最大のものはRGBやその他の形式のデコードされたビデオフレーム、PCMのデコードされたオーディオです。レンダラとオーディオ再生を自分で実装する必要があります。このチュートリアル(http://dranger.com/ffmpeg/)を読むことをお勧めします。それは特定のアンドロイドではありませんが、それはあなたにビデオの再生がどのように動作するかを知らせます。

+0

こんにちは、私たちはすでに、Android用のHLS(H.264/AAC)のFFMPEGベースのプレーヤーを完成させました。本当に実用的なソリューションを手に入れるために投資する努力は、経験豊かな開発者の約3〜4人/月でした。問題は、ARM6/VFPまたはNEONまたはTEGRAを使用しないARM7でのソフトウェアデコードが、HWサポートの場合と同じくらい速くないことです。今は2.3xでのStageFrightの統合を探しています。そこに:http://stackoverflow.com/questions/11266891/how-to-enable-hw-decoder-via-stagefright-in-ffmpeg-android-port – STeN

+1

2.3で標準APIを使用すると、少なくともハードウェアアクセラレーションのAACデコードが可能ですOpenSL ESで。 – Dmitry

0

(免責事項:私は個人的には、以下のリンクフリーでオープンソースプログラムの開発に関与しています)また、他のメディア変換ツールが含まれていZShaolin http://dyne.org/software/zshaolinによって提供され

FFMPEGの静的バージョン(ライブラリとコマンドラインの両方)。

FFMpegをゼロからコンパイルしなくても、スクリプトの使用を容易にすることができます。

+2

ようこそスタックオーバーフロー!あなたの答えを投稿してくれてありがとう! [自己プロモーションに関するよくある質問](http://stackoverflow.com/faq#promotion)をよく読んでください。また、自分のサイト/製品にリンクするたびに免責条項を掲示することが必須*であることにも注意してください。 –

+0

ACK。メモをありがとう。まだ私はこのinfois有用だと思う:AFAIKは、Android用に静的コンパイルされたFFMpegの他のポータブルバイナリはありませんあなたのforum.No自己推進にそれらのためのかなりの需要がここに意図...私は "生き生きとしてあなたの仕事を見せてください」。 – Jaromil

関連する問題