2016-07-19 2 views
0

私はIcecastサーバーにライブビデオをストリーミングするためのプログラムをビルドしています(これは、libavformatをffmpegの実行ファイルではなく使用したい)、FFmpegがそれを実行できるはずです。私はライブビデオをファイルに書き込むことができます(これは本当に簡単ではありません:))しかし、Icecast(ネットワーク)マウントポイントに書き込むavformat/avioの使い方の簡単なコード/例は見つかりません。 サンプルコードへのあらゆるポインタがありがとうございます。avformat(ffmpeg)でIcecastマウントポイントに書き込む方法は?

+0

ちょっと日付がついていますが、これを見てください:http://stackoverflow.com/a/9985297/362536最近では、SOURCEリクエストの代わりにHTTP PUTリクエストを使うこともできます。 – Brad

答えて

0

実際は簡単でした。

const char *outputfile = "icecast://xxx:[email protected]:8000/xyz.mkv"; 
out_format = av_guess_format(NULL, outputfile, NULL); 

あなたは、コンテンツタイプを設定する必要があるかもしれません:「:YYY XXX」ユーザーとマウント用のパスワードで、このところのようにあなただけの出力URLを開く

av_dict_set(&out_options, "content_type", "video/x-matroska", 0); 

次に、あなただけのURLを開きます。

avio_open2(&out_fctx->pb, outputfile, AVIO_FLAG_WRITE, NULL, &out_options) < 0); 

テスト済みです。

0

にFFmpegを使用している場合、あなたはIcecastのような出力を指定:// URL:あなたが直接ffmpegのかはlibavformatを使用している場合

ffmpeg -i input.mkv -content-type video/webm icecast://user:[email protected]/mountpoint 

それは不明です。後者の場合に出力用のURLを指定する方法がある場合は、icecast://と仮定します。

もう1つの方法は、代わりにlibshoutを使用することです。適切なレートでIcecastサーバーにストリームを送信するために設計されたライブラリです。

+0

だからこそ私はプログラムを構築していると言っています(ffmpeg実行ファイルを使用していない)。 libshoutはウィンドウの下でコンパイルするのが難しいです。私はそれに入るつもりはありません:) –

関連する問題