2011-12-14 10 views
7

私はAndroid携帯からスクリーンショットを取得するためにDDMSを使用しています。ビデオでそれらを変換し、ネットワーク経由でビデオをストリーミングするための効率的な方法が必要です。ビデオをストリーミングするにはAndroidスクリーン

私はスクリーンショットのデータで満たされているRawImageを持っている:

RawImage mRawImage; 

私はイメージを作成し、それを保存するためにSWTを使用して知っているまで:

PaletteData paletteData = new PaletteData(
    mRawImage.getRedMask(), 
    mRawImage.getGreenMask(), 
    mRawImage.getBlueMask()); 

ImageData imageData = new ImageData(
    mRawImage.width, 
    mRawImage.height, 
    mRawImage.bpp, 
    paletteData, 
    1, 
    mRawImage.data); 

ImageLoader s = new ImageLoader(); 
s.data = new ImageData[] {imageData}; 
s.save("temp.jpg",SWT.IMAGE_JPEG); 
  • することができますそれらの画像シーケンスをビデオに変換する方法を提案し、 ビデオをストリーミングしますか?

私はストリーミングのために使用することができるNanoHTTPDを見つけましたが、私はどのように変換し、ビデオに画像を圧縮することができますか?

  • 私はffmpegを使用してこれを行うことができると思いますか?

私はFFMPEGとvideo4linux2を使用してウェブカメラをストリーミングするための良いTutorialを見つけました。

RawImagebytesをFFMPEGに送信してライブビデオストリームに変換できますか?

実際のコード:

$ffmpeg -f video4linux2 -i **<add here java stream>** http://78.47.18.19:8090/cam1.ffm 

任意の提案:

$ffmpeg -f video4linux2 -i /dev/video0 http://78.47.18.19:8090/cam1.ffm 

がに似たものに交換してください?

おかげ

PS:私は、私は、圧縮されたビデオにイメージを変えるのを助けるし、その後、HTML5またはFlash Player

のいずれかでそれを再生するために、ネットワーク経由でビデオをストリーミングするソリューションを期待
+0

こんにちはサラミス、あなたは静止画像をキャプチャするレートは何ですか? – Janvo

+0

5-10フレーム/秒で十分です。 – glarkou

+0

こんにちはサラミス、私は以下の私の答えは上記の質問に答えていると思います。デバイス上でのキャプチャでは、ビデオにエンコードするのに十分な秒あたりのフレーム数が確保されている必要があります(ffmpegの-rパラメータを参照)。 – Janvo

答えて

5

があり、このアプローチには二つの方法である:

1)キャプチャ、エンコードおよび上のストリームとデバイス自体から

または

2)デバイス上のキャプチャ、エンコードおよびストリームは、サーバ

から私はあなたの要件のすべてを知りませんが、私は、そのオプション2を推定でしょうどこへ行くルートです。あなたは、あなたの最終目標を達成するために使用するより良いパフォーマンスと幅広いツールを持っています。

キャプチャ 説明したようにほぼ正確にJPEG画像をキャプチャします。 FILE1.JPG FILE2.JPG FILE3.JPG FILE4.jpgなどがあるように、それぞれにインデックスを追加する点を除きます。

ここで、要件によっては、これらのイメージをサーバーにアップロードすることもできます。

ffmpeg -r 5 -b 1800 -i %01d.jpg yourvideo.mp4 
:それが完了したら、あなたはそのようなMP4を作成するためのffmpegを使用することができます

mencoder "./*.jpg" -mf fps=5 -o yourvideo.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800

エンコード 使用することはそうのような非可逆圧縮率を設定するmencode

ストリーミング ネットワーク上でmp4をストリーミングするには、

http://myserver/androidStream 

それは常にストリーミングする、最新のビデオを指していますように、動的に書かれているM3Uプレイリストをアップロード:のようなWebページをetup。使用しているプレーヤーによっては、M3Uプレイリストを次のビデオをロードする「次の」M3Uプレイリストにポイントすることができます。また、要件に応じて、ASXやPLSのような代替プレイリストフォーマットを見ることもできます。

他のM3U以外のプレイリスト形式の例として、http://en.wikipedia.org/wiki/Advanced_Stream_Redirectorおよび http://en.wikipedia.org/wiki/PLS_(file_format)を参照してください。

上記の一般的な手順を使用すると、デバイスが1分あたりn枚のイメージでイメージをキャプチャし、次にそれらのイメージをサーバーにアップロードしてエンコードするシステムが実現します。これらの画像がエンコードされたら、ファイルを参照してムービーを直接ストリーミングするか、M3Uタイプのプレイリストを設定して、「現在の」ビデオから「次の」ビデオに移動することができます。

関連する問題