web-dev-qa-db-ja.com

Android-RTMPストリームとしてカメラをストリーミング

Androidデバイスからカメラストリームをキャプチャし、RTMPを使用してサーバーにストリーミングします(サーバーはout私のコントロールの)私はまだカメラ自体からデータのストリームを作成する方法を理解していませんが、それは後で心配です。

現時点では2つの問題があります。API9+をサポートしたいのですが、RTMPはAndroidでネイティブにサポートされていません。

私は周りを見て、これを見つけましたSO post Convert video Input Stream to RTMP and https://github.com/yixia/VitamioBundle 。前者が提案した ライブラリ はドキュメントがほとんどまたはまったくありません。後者おそらくがサポートしています(?)が、API 14+が必要です。

AndroidデバイスからのRTMPストリーミングをサポートする適切な例やライブラリはありますか?RTSPまたはFFMPEGの変換についても読んだことがありますが、それが実行可能な方法であれば、私はそれを推測しますも十分でしょう。

編集1:

私は this library (これは上記のものに多くの類似点があります)を見つけ、使用しようとしました。 Android Studioにインポートしていくつかのコードを記述しましたが、Java.lang.NoClassDefFoundError RTSP Codec Factoryエラーで内部的にクラッシュするようです。そのため、Androidではうまく動作しません。

また、Adobe airに何度か遭遇しました。このライブラリはネイティブアプリの(小さな)部分に過ぎないため、Action Script 3(AS3)でコーディングしたくありません。 Adobe Airに知らないライブラリがある場合、それが可能であれば喜んで統合します。

10
Gooey

リンクした質問の受け入れられた回答 で、誰かがJavaCVの使用を提案しています。

API 8以降を必要とし、FFmpegFrameRecorderクラスを備えています。

Githubへのリンク:

https://github.com/bytedeco/javacv

彼らはflvをキャプチャする完全なサンプルさえ持っています(それはかなり大きいのでここに貼り付けません): https://github.com/bytedeco/javacv/blob/master/samples/RecordActivity.Java =

あなたの場合、おそらく交換する必要があります:

private String ffmpeg_link = "/mnt/sdcard/stream.flv";

private String ffmpeg_link = "rtmp://<server>:<port>/stream";
17
aergistal

spydroidをご覧ください。それはまさにあなたが探しているものを実行します。彼らのウェブサイトはここにあります: https://code.google.com/p/spydroid-ipcamera/

これらは、さまざまなストリーミングオプションの説明といくつかのコード例とともに、使用できるライブラリを提供します。上記の情報はここにあります: https://github.com/fyhertz/libstreaming

2
Willis

Androidデバイスから公開できる場合( (サポートされているプロトコルのリスト)を参照 )、次のコマンドを使用してビデオをサーバー:

ffmpeg -re -i <input link> -vcodec h264 -ar 44100 -f flv "rtmp://<Host>/<publication>"
1
thomas