Red5 サーバーでビデオを flv に変換する必要があります。この点に関するヘルプは非常に役立ちます。
4 に答える
静的ファイルを作成するには、ffmpeg (Ubuntu では avconv とも呼ばれます) を使用します。
ffmpeg -i /pathto/inputfile.xxx /pathto/outputfile.flvここで、「xxx」は、.avi、.mp4 などの入力ファイルの拡張子です。
リアルタイム ブロードキャスト用の入力ストリーム (キャプチャ デバイスなど) から RED5 を使用してライブ出力ストリームを作成するには、次のようにパイプで ffmpeg を使用します。
入力ストリーム > - | ffmpeg -f xxx -i - -f flv rtmp://your.red5.server:1935/live/mybroadcast
xxx は、入力ストリームのビデオ形式に関する最も適切な推測です。「rawvideo」などの形式によっては、追加の変換オプションが必要になる場合や、オーディオ ストリームを個別に処理する必要がある場合があります (2 番目の -i オプション)。
RED5 ブロードキャストを受信するには、ブラウザーのフラッシュ プレーヤーを ffmpeg からの出力と同じパスに接続します。これは RED5 ストリームの入力と同じであり、これも RED5 ストリームからの出力と同じです (はい、rtmp は非常にそのように効率的です):
rtmp://your.red5.server:1935/live/mybroadcast
Ubuntu ボックスで ffmpeg を使用すると、すばらしい結果が得られます。
svn チェックアウト svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
FFMPEG を使用して flv を mpeg に変換する Coding4Fun のDan Fernandezによって作成されたプロジェクトがありましたが、その逆も当てはまります。
これが彼が作成したInnerTubeというプロジェクトです
FFMPEGを使用したコマンド ライン引数の詳細を説明しているサイトへのリンクを次に示します。
この取り組みにはXuggler ( http://www.xuggle.com ) を使用することをお勧めします。以下に、Red5 アプリケーションに追加できるサンプル メソッドを示します。
public void convert(String sourceFilePath, String destinationFilePath) {
//assumes the following: sourceFilePath is input file and destinationFilePath is output file
IMediaReader reader = ToolFactory.makeReader(sourceFilePath);
IMediaWriter writer = ToolFactory.makeWriter(destinationFilePath, reader);
writer.open();
writer.setForceInterleave(true);
IContainerFormat outFormat = IContainerFormat.make();
outFormat.setOutputFormat("flv", destinationFilePath, null);
IContainer container = writer.getContainer();
container.open(args[1], IContainer.Type.WRITE, outFormat);
writer.addVideoStream(0, 0, ICodec.findEncodingCodecByName("flv"), 320, 240);
writer.addAudioStream(1, 0, ICodec.findEncodingCodecByName("libmp3lame"), 2, 44100);
reader.addListener(writer);
while (reader.readPacket() == null);
}
「mpeg」について言及していますが、このコード ブロックは、FFMpeg と Xuggler でサポートされているすべてのメディア タイプを変換します。