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の変換についても読んだことがありますが、それが実行可能な方法であれば、私はそれを推測しますも十分でしょう。
私は this library (これは上記のものに多くの類似点があります)を見つけ、使用しようとしました。 Android Studioにインポートしていくつかのコードを記述しましたが、Java.lang.NoClassDefFoundError RTSP Codec Factory
エラーで内部的にクラッシュするようです。そのため、Androidではうまく動作しません。
また、Adobe airに何度か遭遇しました。このライブラリはネイティブアプリの(小さな)部分に過ぎないため、Action Script 3(AS3)でコーディングしたくありません。 Adobe Airに知らないライブラリがある場合、それが可能であれば喜んで統合します。
リンクした質問の受け入れられた回答 で、誰かが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";
spydroid
をご覧ください。それはまさにあなたが探しているものを実行します。彼らのウェブサイトはここにあります: https://code.google.com/p/spydroid-ipcamera/
これらは、さまざまなストリーミングオプションの説明といくつかのコード例とともに、使用できるライブラリを提供します。上記の情報はここにあります: https://github.com/fyhertz/libstreaming
Androidデバイスから公開できる場合( (サポートされているプロトコルのリスト)を参照 )、次のコマンドを使用してビデオをサーバー:
ffmpeg -re -i <input link> -vcodec h264 -ar 44100 -f flv "rtmp://<Host>/<publication>"