9

私が欲しいのはbroadcast、誰もが自分の携帯電話やウェブサイトでそのビデオを見ることができるように、離れた場所へのアンドロイドカメラのビデオです。私はunicast自分のPCのvlcプレーヤーに成功しました。red5私はサーバーAdobe media server、、サーバーを試しffmpegましたが、すべてが役に立ちました。それらのそれぞれはbroadcast、事前に記録されたファイルからのみビデオを撮ることができ、ライブストリームからはビデオを撮ることができませんでした。誰かが私が何をしているのか私に提案できますか?

4

1 に答える 1

8

MediaRecorderにTCP接続のFileHandleを提供できることを読みました(stackoverflowでもあったと思います)。次に、その接続をリッスンし、データを読み取り、パケット化し、RTSP/RTP-Stream として再送信できます。

元の投稿をたまたま見つけたら、ここで参照します。

編集:

元の投稿: Android からのストリーミング ビデオ

Filedescriptor に関する部分は次のとおりです

念のため、ブログから適切な例を引用します。

String hostname = "your.host.name"; 
int port = 1234; 
Socket socket = new Socket(InetAddress.getByName(hostname), port);
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
MediaRecorder recorder = new MediaRecorder(); // Additional MediaRecorder setup (output format ... etc.) omitted 
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.prepare();
recorder.start();

ただし、これはビデオ ファイル データのみをネットワーク経由で送信します。保存してから再生できます。しかし、前述のとおり、これはまだストリームではありません。

更新: 最初のステップで TCP ソケットを使用する必要さえありません。「LocalSocket」(1) につまずいたところです。これにより、MediaRecorder にフィードするための FileHandle も取得されます。これらのローカル ソケットは、「AF_LOCAL/UNIX ドメイン ストリーム ソケット」です。http://developer.android.com/reference/android/net/LocalSocket.htmlを参照してください

私は今日の時点で上記のすべてを自分で試していませんが、すぐに試してみます. だから多分私は近い将来もっと助けになることができます:)

(1)セキュリティ上の理由から、新しいバージョンの Android ではLocalSocketを使用できません。2015 年 11 月 25 日の更新を参照してください。

更新 2: Android ソースで「OUTPUT_FORMAT_RTP_AVP」を見たところです。しかし、それは隠されています:(したがって、Androidの将来のAPIバージョンで利用できるようになると思います。 https://github.com/android/platform_frameworks_base/blob/master/media/java/android/media/MediaRecorder.java Line 219:

public static final int OUTPUT_FORMAT_RTP_AVP = 7;

ハードコーディングされたコードを提供することで皮をだますことは試していません7...もしそうなら、ここにコメントを残してください!

2015年11月25日更新

libstreaming に出くわしました: https://github.com/fyhertz/libstreaming あまり深くは調べていませんが、このプロジェクトから Android からのストリーミングについて学ぶべきことがたくさんあるようです (使用するだけでなくても)。 . LocalSocketソリューションは新しいAndroidバージョンでは無効であると読みました:(しかし、代替手段が提示されています:ParcelFileDescriptor.

于 2012-06-20T13:12:18.167 に答える