7

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

bytesからRawImageFFMPEG にを送信して、ライブ ビデオ ストリームに変換することはできますか?

実際のコード:

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

次のようなものに置き換えます。

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

助言がありますか?

ありがとう

PS: 画像を圧縮ビデオに変換し、ネットワーク経由でビデオをストリーミングして、HTML5 または Flash Player で再生するのに役立つソリューションを期待しています。

4

1 に答える 1

5

これにアプローチするには、次の 2 つの方法があります。

1) デバイス自体でのキャプチャ、エンコード、ストリーミング

また

2) デバイスでのキャプチャ、サーバーからのエンコードおよびストリーミング

あなたの要件のすべてを知っているわけではありませんが、オプション 2 が進むべき道だと思います。最終目標を達成するために、より優れたパフォーマンスとより幅広いツールを使用できるようになります。

キャプチャ 説明した方法とほぼ同じ方法で JPEG 画像をキャプチャします。FILE1.JPG FILE2.JPG FILE3.JPG FILE4.jpg などを持つように、それぞれにインデックスを追加することを除いて。

ここで、要件に応じて、一定の間隔で、これらの画像をサーバーにアップロードします。

エンコード mencode を使用して、非可逆圧縮のレートを次のように設定します。

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

それが完了したら、次のように ffmpeg を使用して MP4 を作成できます。

ffmpeg -r 5 -b 1800 -i %01d.jpg yourvideo.mp4

ストリーミング ネットワーク経由で mp4 をストリーミングするには、次のような Web ページをセットアップします。

http://myserver/androidStream

これは、ストリーミングする最新のビデオを常に指すように、動的に記述された M3U プレイリストをロードします。使用しているプレーヤーによっては、M3U プレイリストを、次のビデオをロードする「次の」M3U プレイリストにポイントできる場合があります。要件に応じて、ASX や PLS などの代替プレイリスト形式を検討することもできます。

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

上記の一般的な手順を使用すると、デバイスが 1 分間に n 画像の速度で画像をキャプチャし、それらの画像をサーバーにアップロードしてエンコードするシステムができます。これらの画像がエンコードされたら、ファイルを参照して映画を直接ストリーミングするか、M3U タイプのプレイリストをセットアップして、プレーヤーが「現在の」ビデオから「次の」ビデオが利用可能になったときに移動できるようにすることができます。

于 2012-01-31T23:44:26.257 に答える