2014年01月26日

VideoLANドキュメント私訳 第四回 ストリーミング・ハウツー(3)コマンドラインの例

VideoLANドキュメント ストリーミング関連抜粋私訳
https://wiki.videolan.org/Main_Page/

VLC Media Playerを持ちでないかたは(オープンソース・フリー、各種OS版あり)
VLC Media Player ダウンロード・ページ

VideoLanのwikiドキュメントの内、ストリーミングに関連するドキュメントを翻訳試みました。
数回に分けて掲載します。全部を一度に見る場合は、次のPDFファイルをご覧ください。
VideoLAN-Document-Streaming-How-To-etc.pdf
#############################################
第四回 ストリーミング・ハウツー(3)コマンドラインの例
Documentation:Streaming HowTo/Command Line Examples
コマンドラインの例
https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/

VLCストリーム出力の上級使用例(変換、マルチストリーミングなど)

目次
1.変換
1.1.より複雑な変換の例
2.マルチ・ストリーミング
3.変換とマルチ・ストリーミング
3.1.より複雑なマルチ−変換の例
4.HTTPストリーミング
5.RTSPライブ・ストリーミング
6.RTSPオンデマンド−ストリーミング
7.ウィンドウズ・メディア・プレーヤーへのMMS/MMSHストリーミング
8.ESモジュールの利用
9.ストリームをオープンのままにする
10.VLCをリフレクターとして使用する

1.変換

128kbps、44100HZで2チャンネルにOgg Vorbisへストリームを変換し、"foobar.ogg"として保存する:

% vlc -I dummy -vvv input_stream --sout
"#transcode{vcodec=none,acodec=vorb,ab=128,channels=2,samplerate=44100}:file{dst=foobar.ogg}"

入力ストリームを変換し、関連するSAPアナウンスと共にマルチキャストIPアドレスに送信する:

% vlc -vvv input_stream --sout
'#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:
rtp{mux=ts,dst=239.255.12.42,sdp=sap,name="TestStream"}'

インプットストリームを表示し、関連するSAPアナウンスと共にマルチキャストIPアドレスに送信する:

% vlc -vvv input_stream --sout
#duplicate{dst=display,dst="transcode{vcodec=mp4v,acodec=mpga,vb=800,
ab=128,deinterlace}:rtp{mux=ts,dst=239.255.12.42,sdp=sap,name="TestStream"}"}'

入力ストリームを変換し、変換ストリームを表示し、関連するSAPと共にマルチキャストIPアドレスに送信する:

% vlc -vvv input_stream --sout
'#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:
duplicate{dst=display,dst=rtp{mux=ts,dst=239.255.12.42,sdp=sap,name="TestStream"}}'

クライアントで上記のマルチキャストされた入力ストリームを受信する:

vlc rtp://239.255.12.42

1.1.より複雑な変換の例

SDIカードでキャプチャーした入力をudpでH.264とAACのTSでストリーミングする

% cvlc -vvv --live-caching 2000 decklink://
--decklink-audio-connection embedded --decklink-aspect-ratio 16:9 --decklink-mode hp50
--sout-x264-preset slow --sout-x264-tune film --sout-transcode-threads 8 --no-sout-x264-interlaced
--sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000
--sout '#transcode{vcodec=h264,vb=6000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=192.168.2.1:1234}'

2.マルチストリーミング

ストリームをマルチキャストIPアドレスとユニキャストIPアドレスに送信する:

vlc -vvv input_stream
--sout '#duplicate{dst=rtp{mux=ts,dst=239.255.12.42,sdp=sap,name="TestStream"},dst=rtp{mux=ts,dst=192.168.1.2}}'

ストリームを表示し、2つのユニキャストIPアドレスに送信する:

vlc -vvv input_stream
--sout '#duplicate{dst=display,dst=rtp{mux=ts,dst=192.168.1.12},dst=rtp{mux=ts,dst=192.168.1.42}}'

マルチ・プログラムのインプット・ストリームの一部を送信する:

vlc -vvv multiple_program_input_stream
--sout'#duplicate{dst=rtp{mux=ts,dst=239.255.12.42},select="program=12345",dst=rtp{mux=ts,dst=239.255.12.43},select="video,program=1234-2345"}'

このコマンドはIDが12345の入力ストリームのプログラムを239.255.12.42に送信し、IDが1234から2345のすべてのプログラムを239.255.12.43に送信する。

3.変換とマルチ・ストリーミング

インプットストリームを変換し、変換されたストリームを表示し、関連するSAPアナウンスと共にマルチキャストIPアドレスとユニキャストIPアドレスに送信する:

% vlc -vvv input_stream --sout
'#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:
duplicate{dst=display,dst=rtp{mux=ts,dst=239.255.12.42,sdp=sap,name="TestStream"},
dst=rtp{mux=ts,dst=192.168.1.2}}'

入力ストリームを表示し、変換し、2つのユニキャストIPアドレスに送信する:

% vlc -vvv input_stream --sout '#duplicate{dst=display,dst="transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:
duplicate{dst=rtp{mux=ts,dst=192.168.1.2},dst=rtp{mux=ts,dst=192.168.1.12}"}'

入力ストリームをマルチキャストIPアドレスに送信し、変換したストリームを関連するSAPアナウンスと共に別のマルチキャストIPアドレスに送信する:

% vlc -vvv input_stream --sout
'#duplicate{dst=rtp{mux=ts,dst=239.255.1.2,sdp=sap,name="OriginalStream"},
dst="transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:
rtp{mux=ts,dst=239.255.1.3,sdp=sap,name="TranscodedStream"}"}'

3.1.より複雑なマルチ−変換の例

SDI入力カードでキャプチャーした入力をひとつはHD、もうひとつはSDの2つに変換し、両方をudpに送信する。

% cvlc -vv --live-caching 2000
--decklink-audio-connection embedded --decklink-aspect-ratio 16:9 --decklink-mode hp50 decklink://
--sout-x264-preset fast --sout-x264-tune film --sout-transcode-threads 24 --no-sout-x264-interlaced
--sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 4000 --sout-x264-vbv-bufsize 4000
--sout '#duplicate{dst="transcode{vcodec=h264,vb=6000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=192.168.1.2:4013}",
dst="transcode{height=576,vcodec=h264,vb=2000,acodec=mp4a,aenc=fdkaac,ab=128}:std{access=udp,mux=ts,dst=192.168.1.2:4014}"}'

SDI入力カードでキャプチャーした入力を、無変換で一度再ストリーミングし、二度目は変換する:

% cvlc -vv --live-caching 2000
--decklink-audio-connection embedded --decklink-aspect-ratio 16:9 --decklink-mode hp50 decklink://
--sout-x264-preset fast --sout-x264-tune film --sout-transcode-threads 24 --no-sout-x264-interlaced
--sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 4000 --sout-x264-vbv-bufsize 4000
--sout '#duplicate{dst="transcode{vcodec=h264,vb=6000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=192.168.1.2:4013}",
dst="std{access=udp,mux=ts,dst=192.168.1.2:4014}"}'

4.HTTPストリーミング

HTTPでストリームする:

 サバー側で次を実行する:

% vlc -vvv input_stream --sout '#standard{access=http,mux=ogg,dst=server.example.org:8080}'

 クライアント側で次を実行する:

% vlc http://server.example.org:8080

変換し、HTTPでストリームする:

% vlc -vvv input_stream --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:
standard{access=http,mux=ogg,dst=server.example.org:8080}'

ライブ・ビデオ・ストリームを録画する:

% vlc http://example.com/live.asf --sout="#duplicate{dst=std{access=file,mux=asf,
dst='C:\test\test.asf'},dst=nodisplay}"

例えばHTTPでOgg/Vorbisでオーディオをストリームしたい場合:

% vlc -vvv cdda:/dev/cdrom
--sout '#transcode{acodec=vorb,ab=128}:standard{access=http,mux=ogg,dst=server.example.org:8080}'

5.RTSPライブ・ストリーミング

RTSPとRTPでストリームする:

 サーバー側次を実行する:

vlc -vvv input_stream --sout '#rtp{dst=192.168.0.12,port=1234,sdp=rtsp://server.example.org:8080/test.sdp}'

 クライアント側で次を実行する:

vlc rtsp://server.example.org:8080/test.sdp

6.RTSPオンデマンド−ストリーミング

Documentation:Streaming HowTo/VLMを見よ。
https://wiki.videolan.org/Documentation:Streaming_HowTo/VLM/

7.ウィンドウズ・メディア・プレーヤーへのMMS/MMSHストリーミング

% vlc -vvv input_stream --sout '#transcode{vcodec=DIV3,vb=256,scale=1,acodec=mp3,ab=32,
channels=2}:std{access=mmsh,mux=asfh,dst=:8080}'

VLCメディア・プレーヤーは次のURLを使ってこの接続ができます:mmsh://server_ip_address:8080。ウィンドウズ・メディア・プレーヤーは次のURLを使ってこの接続ができます: mms://server_ip_address:8080.

8.ESモジュールの利用
訳注:ES=elementary Stream、要素ストリームと訳したもの

2つのPSファイルでオーディオとビデオを分離します:

% vlc -vvv input_stream --sout '#es{access=file,mux=ps,url_audio=audio-%c.%m,url_video=video-%c.%m}'

TSファイルに入力ストリームのオーディオトラックを抽出します:

% vlc -vvv input_stream --sout '#es{access_audio=file,mux_audio=ts,url_audio=audio-%c.%m}'

ひとつオーディオトラックとビデオトラックを別々のポートにユニキャストでストリームする(注:これはVLC0.8.6以前でしか有効ではありません。改善お願い):

Stream in unicast the audio track on a port and the video track on another port (NOTE: This will not only work with VLC 0.8.6 or older - FIXME?):

サーバー側:

% vlc -vvv input_stream --sout '#es{access=rtp,mux=ts,url_audio=192.168.1.2:1212,
url_video=192.168.1.2:1213}'

クライアント側:
 オーディオ受信:

% vlc udp://@:1212

 ビデオ受信:

% vlc udp://@:1213

ビデオをマルチキャストし、オーディオをファイルにダンプする:

% vlc -vvv input_stream --sout '#es{access-video=udp,mux-video=ts,dst-video=239.255.12.42,
access-audio=file,mux-audio=ps,dst-audio=audio-%c.%m}'

注:更に複雑な手法を構築するためESモジュールと他のモジュールを結合することもできます。

9.ストリームをオープンのままにする

% % vlc -vvv input_stream -sout-keep
-sout=#transcode{acodec=mp3}:duplicate{dst=display{delay=6000},
dst=gather:std{mux=mpeg1,dst=:8080/stream.mp3,access=http},select="novideo"}

基本的な変換は選択したファイルからMP3ストリームにです(ビデオ・ファイルの場合は、ビデオは無視されます)。HTTPを通じてlocalhost:8080/stream.mp3似ストリームされます。
:sout-keepとdst=gather:stdの結合は、ストリームがオープンのままにされ、継続するアイテムが同じストリームを通じて再生されます。

10.VLCをリフレクターとして使用する

udp入力を受け、一旦ipv6マルチキャストを通じて無変換にレンダリングし、更にHLSにレンダリングします。

% cvlc -vvv udp://@:4013 --ttl 60
--sout '#duplicate{dst=std{access=http,mux=ts,dst=[::]:3013}",
dst=std{access=udp,mux=ts,dst=ffe2::1]:2013},
dst=std{access=livehttp{seglen=5,delsegs=true,numsegs=5,index=/path/to/stream.m3u8,
index-url=http://example.org/stream-########.ts},mux=ts{use-key-frames},dst=/path/to/stream-########.ts}}}

posted by Kose at 20:01| VLC Media Player