つまり、Macでもカメラやマイクがffmpegで扱えるようになったようですね。
ということで、Macのffmpegを使ってtwitchとニコニコ生放送で配信ができたので書いておく。
1. Mac Portsを使えば簡単にffmpegをインストールできると知ったので、Mac Portsをインストールする。
Mac Portsのサイトへアクセス 「Download」をクリック
2. 自分の使っているMacのバージョンにあったMac Portsをダウンロード
3. ダウンロードしたMac Portsをインストール
4. Xcode Command Line Toolsをインストールしてない場合はターミルから次のコマンドでインストール。
$ xcode-select --install
5. ffmpegをインストール
sudo port install ffmpeg +nonfree +librtmpnonfreeをつけるとlibfdkaacが使えるようになります。
librtmpオプションを付けなくてもよかったかも
6.キャプチャ機器を確認
ffmpegで使うことができるキャプチャ機器を確認
ffmpeg -f avfoundation -list_devices true -i ""ここで使いたい機器の番号を覚えておくこと。
7.配信
以下ように配信。あくまで例です。パラメータはお使いのMacのスペック、配信先のサービスに合わせて変えてください。
上で覚えておいた機器の番号は -i の所で指定します。今回は0:4なので、映像に「CamTwist」、音声に「USB Audio CODEC」を指定しています。
ffmpeg -f avfoundation -i "0:4" -maxrate 800k -bufsize 800k -crf 23.0 \
-threads 0 -vcodec libx264 -profile:v high -preset slow -pix_fmt yuv420p \
-acodec libfdk_aac -ar 44100 -profile:a aac_he -signaling explicit_sbr -ab 48k -ac 2 -afterburner 1 \
-s 640x360 -r 25 -f flv "<URL>/<Stream>" -y out.mp4
<例:ニコニコ生放送の場合>
ffmpeg -f avfoundation -i "0:4" -maxrate 336k -bufsize 672k -crf 23.0 \
-threads 0 -y -vcodec libx264 -profile:v high -preset veryfast -pix_fmt yuv420p \
-acodec libfdk_aac -ar 44100 -profile:a aac_he -signaling explicit_sbr -ab 48k -ac 2 -afterburner 1 \
-s 640x360 -r 25 -f flv "rtmp://nlpocaxxx.live.nicovideo.jp:1935/publicorigin/1234567_xx_0?123456:lv123456789:00:1234567890:0:1234567890:xxxxxxxxxxxxxxxxx/lv123456789" out.mp4
<例:twitchの場合>
ffmpeg -f avfoundation -i "0:4" -maxrate 1M -bufsize 2M -crf 23.0 \twitchのrtmpサーバURLはここやここを参考にすればいいかと思います。
-threads 0 -y -vcodec libx264 -profile:v high -preset slow \
-pix_fmt yuv420p -acodec libfaac -ar 44100 -ab 128k -ac 2 \
-s 1280x720 -r 30 -f flv "rtmp://live.twitch.tv/app/live_12345678_XXXXXXXXXX" out.mp4
もちろん-x264opts を付けてx264のオプションを細かく設定もできます。
ffmpeg -f avfoundation -i "0:4" -maxrate 288k -bufsize 576k -crf 23.0 \
-threads 0 -y -vcodec libx264 -profile:v high -preset medium \
-pix_fmt yuv420p -acodec libfaac -ar 44100 -ab 96k -ac 2 \
-s 640x360 -r 25 -x264opts "keyint=250:min-keyint=0:scenecut=40:bframes=3:b-adapt=1:b-bias=0:b-pyramid=normal:no-cabac=0:ref=4:deblock=-2,-2:rc-lookahead=40:vbv-init=0.9:crf-max=0:qpstep=4:ratetol=1.0:ipratio=1.10:pbratio=1.10:chroma-qp-offset=0:aq-mode=1:aq-strength=0.50:no-mbtree=0:qcomp=0.80:partitions=p8x8,b8x8,i8x8,i4x4:direct=spatial:no-weightb=0:weightp=2:me=hex:merange=16:subme=7:no-psy=0:psy-rd=1.00,0.25:no-mixed-refs=0:no-chroma-me=0:no-8x8dct=0:trellis=1:no-fast-pskip=0:no-dct-decimate=1:nr=0:deadzone-inter=6:deadzone-intra=6:colormatrix=smpte170m:level=-1" \
-f flv "rtmp://nlpocaxxx.live.nicovideo.jp:1935/publicorigin/1234567_xx_0?123456:lv123456789:00:1234567890:0:1234567890:xxxxxxxxxxxxxxxxx/lv123456789" out.mp4
普段はここで色々やってます。