やりたいこと
FFmpeg で現在時刻入りのテスト映像ソースを作って、RTMP でライブ配信サービスに突っ込んで、配信サービスの遅延をテストしたい。
手順
必要なソフトのインストール
FFmpeg をどうにかしてインストールしてください。筆者は Windows 10 で実験しましたので、下記リンクから Windows 用のバイナリを落としてきて、C:\bin\ffmpeg に ffmpeg.exe を置きました。
ライブ配信用のサービスのセットアップ
筆者は Azure のなかの人なので、Azure Media Services の Live Channel を作りました。
(ここの手順はあとで別記事で書きたいと思います。)
たぶん RTMP/RTMPS で受けられるサービスなら何でもいいと思います。
Azure Media Services の Live Streaming の機能を使う場合、このあたりのドキュメントの手順に従って、ライブ配信の準備をした結果として、インジェスト用の URL として以下のようなものがポータルに表示されました。
rtmp://ライブチャンネル名.channel.media.azure.net:1935/live/自動生成されるパラメーター
そこにおまじないを一言加えた以下の URL を使うと、動画のインジェストが可能です。
rtmp://ライブチャンネル名.channel.media.azure.net:1935/live/自動生成されるパラメーター/mystream1
あとはコマンド一発
コマンドプロンプトを開いて、以下のコマンドで RTMP でインジェストが始まります。コマンドの最後の URL のところを、自分が使っているインジェスト先に変えれば、どこのサービスにも RTMP でこのテストソース映像を打ち上げられると思います。
ffmpeg.exe -re -f lavfi -i "sine=frequency=440:sample_rate=44100" -f lavfi -i smptehdbars -vf drawtext="fontfile=monofonto.ttf: fontsize=24: box=1: boxcolor=black@0.75: boxborderw=5: fontcolor=white: x=(w-text_w)/2: y=((h-text_h)/2)+((h-text_h)/4): text='%{localtime}'" -strict -2 -c:a aac -b:a 128k -ar 44100 -r 30 -g 60 -keyint_min 60 -b:v 400000 -c:v libx264 -preset medium -bufsize 800k -maxrate 400k -f flv rtmp://ライブチャンネル名.channel.media.azure.net:1935/live/自動生成されるパラメーター/mystream1
まとめ
FFmpeg のコマンドオプション、順番によって動いたり動かなかったりと大変面倒なのですが、これがどなたかの役に立ちましたら幸いです。
もっといいコマンドあるよ!というコメントもお待ちしております!