ffmpeg+tsukasa使用
概要
ffmpegとtsukasaを用いることで、スマホ配信でもmmsプロトコルを使用する為の方法
※要ポート開放
自鯖 or rtmp置き場様のみから変換かけただけです
rtmp/HLSとの差異
メリット
・かがみん(鏡置き場様)を使用することができる
・おさしみが使える
デメリット
・接続が切れた際、再度かがみん(鏡置き場様)への接続設定、tsukasa起動が必要となる
(間改造かがみんを使えば回避可能)
・自PCを経由させるので、ポート開放の知識が必要になる
必要なもの
◎スマホアプリ(Other Serverに出力可能なもの)
◎ffmpeg+tsukasa
◎nginx
事前準備
共通
スマホアプリから送出する(自PC側で受ける)ポートを開放しておく
スマホ作業
自鯖への配信準備をする(方法は自鯖編のどれか参照)
PC作業
録画不要の場合
自鯖+OBS使用を参照しnginxを導入する
自鯖 or rtmp置き場様のみ等を参照。nginxよりffmpeg+tsukasaにpushする。簡単な図解とすると
スマホApp(配信)→ nginx(push)→ ffmpeg(変換)→ tukasa(プロトコル置換) → かがみん(鏡置き場様)
※録画する場合と違う部分はそのコマンドがないだけでしたてへぺろ
tsukasa.batを次のように記述する
c:\tsukasa\ffmpeg.exe -f live_flv -listen 1 -i rtmp://127.0.0.1:1935/live/livestream -c copy -bsf:v h264_mp4toannexb -f asf_stream -map a -map v - | c:\tsukasa\tsukasa.exe かがみん or 鏡置き場様URL
青字は自PCの格納ディレクトリに合わせて(tsukasa.batと同一ディレクトリに全てあるようなら(相対パスとして)ファイル名だけでよい)
赤字はスマホアプリの設定、使用するかがみん(鏡置き場様)のURLに合わせる
例によってスマホ側のURLは[ストリームURL/ストリームキー]でスマホアプリとtsukasa.batで、{ポート番号/ディレクトリ/ストリームキー}を一致させる必要がある
(上例だと1935/live/livestreamの部分ね)
録画したい場合
ffmpegで保存する場合
ffmpegで配信用にエンコードするだけでなく、録画用に保存も行う
そのためにtsukasa.batを以下のように編集する
・tsukasa.bat
c:\tsukasa\ffmpeg.exe -f live_flv -listen 1 -i rtmp://127.0.0.1:1936/live/livestream -c copy -bsf:v h264_mp4toannexb -f tee -map a -map v "[f=asf_stream]pipe:1|[f=flv]record.flv" - | c:\tsukasa\tsukasa.exe かがみん or 鏡置き場様URL
後ろの-f tee -map a -map v "[f=asf_stream]pipe:1|[f=flv]record.flv"部分で
[f=flv]record.flvと指定した形式やファイル名で保存できるため、必要であればここを編集する。
例えば[f=matroska]record.mkvとするとmkvの形式で録画を保存することができる
なお、ffmpegの-vtagオプションの指定などこだわっている場合注意が必要
また、mp4形式で保存する場合の時など、エンコードを正常終了させなかった場合に録画を再生できない状態になってしまうことがあるため、注意
(ffmpeg自体を正常終了させたいときはffmpegが動いているcmdにqキーを送信する)
nginxで保存する
自鯖+OBS使用を参照しnginxを導入する
自鯖 or rtmp置き場様のみ等を参照。nginxよりffmpeg+tsukasaにpushする。簡単な図解とすると
スマホApp(配信)→ nginx(録画・push)→ ffmpeg(変換)→ tukasa(プロトコル置換) → かがみん(鏡置き場様)
となる。例とすると
・nginx.conf
push rtmp://127.0.0.1:1936/live/livestream;
(当然、listenはそれ以外のポート。慣習にならうなら1935番)
録画する為の構文は自鯖 or rtmp置き場様のみ参照
・tsukasa.bat
c:\tsukasa\ffmpeg.exe -f live_flv -listen 1 -i rtmp://127.0.0.1:1936/live/livestream -c copy -bsf:v h264_mp4toannexb -f asf_stream -map a -map v - | c:\tsukasa\tsukasa.exe かがみん or 鏡置き場様URL
ポート番号がスマホアプリ側ではなくnginx.confでpushされた番号になる
配信開始
①かがみん起動(or鏡置き場様の借用設定)
②tsukasa.bat起動
③(録画する場合)nginxを起動
④スマホアプリの開始ボタンを押下
(①~③はどの順番でもよい)
上手くいっていればOBSでmms配信をしている時のようにcmdにパケット送出のメッセージが流れ出します
既知の問題
①特にスマホアプリでの配信で起きるが、C++版かがみんの置き場に対しtsukasa.batで自鏡のポート番号にpush→別の鏡置き場にpullにすると映像が表示されず、音声だけ配信される
C#版かがみん同士だと問題なく映像が送れるので、コンテナの扱い方が違う?
(自鏡に直接繋ぐと映像も表示されるので、自身の帯域が十分であれば問題なし)
②魔改造かがみん使用時、tsukasa.batで直接他の置き場にpushする場合、300秒でpushインポートタスクが終了する
(置き場で指定しているポートでエクスポートしていないので当然。置き場には不要な機能なので改善するか思案中。。。
改善するならpull、pushに続く別のラジオボタンで選択できる等にする)
- 最終更新:2018-10-22 00:58:09