web-dev-qa-db-ja.com

ビデオ入力ストリームをRTMPに変換する

Android電話からネットワークメディアサーバーにビデオ録画をストリーミングしたい。

最初の問題は、MediaRecorder出力をソケットに設定するときに、ストリームにmdatサイズのヘッダーが欠落していることです。これは、そのストリームをローカルで前処理し、欠落したデータをストリームに追加して有効な出力ストリームを生成することで修正できます。

問題はそこからどのように進むかです。

そのストリームをRTMPストリームとして出力するにはどうすればよいですか?

36
Marko

まず、質問を解きましょう。あなたが推測したように、 [〜#〜] rtmp [〜#〜] は現在Androidではサポートされていません。 いくつかのサイドライブラリ を使用してサポートを追加できますが、これらは完全な実装ではないか、失敗する他の望ましくない副作用やバグがある可能性がありますあなたのニーズを満たします。

この場合の一般的な代替手段 は、 [〜#〜] rtsp [〜#〜]が独自のRFC を持つ同等のセッション形式を提供し、RTPと組み合わせた場合のパケット構造は非常に似ていますここで必要な修正を実行してRTP/RTSPをRTMPに変換することもできますが、前述のように、そのような努力は現在アプリケーションの開発範囲外です。

したがって、RTMP( このスレッドを無効化する )とその 上記のリンクライブラリ はニーズを満たしていません。

たとえば、 このチュートリアルに従って 、Livu、Wowza、およびAdobe Flash Playerを使用して クライアントのライセンスに関するLivu開発者 または、 このクライアントライブラリ とその完全な Androidレコーダーの例 を使用できますクライアントを構築します。

要約する:

RTSP

RTMP

アプリケーションの幸運を祈ります。私はこれらのライブラリのすべてを包括的に理解しているわけではありませんが、この記事を書いている時点では、これらはこの分野の標準的なソリューションのようです。

編集:

OPによると、RTMPライブラリセットを歩く:

要するに、より多くの作業が必要です。ここで必要なのは、他の回答とこれらの例の改善です。

49
MrGomez

AndroidデバイスでWebブラウザーを使用している場合、ビデオのキャプチャとサーバー側の記録にWebRTCを使用できます。つまり、 Web Call Server 4

したがって、フルパスは次のようになります。

Android Chrome [WebRTC]> WCS4>記録

したがって、ここではRTMPプロトコルは必要ありません。

スタンドアロンのRTMPアプリを使用している場合は、ビデオ録画に任意のRTMPサーバーを使用できます。私が知っているように、WowzaはH.264 + Speexレコーディングをサポートしています。

1
eeKat88