2013/10/13

rtmp-nginx-module で配信を mp4 で録画する方法

題名の通り。

record all では出力形式が FLV 形式なので、Samba を通して再生すると恐ろしくシークが遅い。なので MP4 形式で録画するようにしたかったのだけど、rtmp-nginx-module にはそんな機能はないらしい。

そんなときは ffmpeg さんに頼んでみようというお話。

まずは以下のシェルスクリプトをどこかに作る。(例: /usr/local/bin/nginx_mp4_recording)

#!/bin/bash

NOW=$(date +%Y%m%d-%H%M%S)
OUTPUT=/tmp/rec/${1}-${NOW}.mp4

ffmpeg -re -i rtmp://localhost/live/${1} -vcodec copy -acodec copy $OUTPUT

あとは nginx の rtmp サーバーのアプリケーション(例: application live { … })内に、

exec /usr/local/bin/nginx_mp4_recording $name;

と書いて配信開始時に呼び出されるようにしておけばオッケー。

気になる負荷は Atom 330 1.6GHz で 0.5~1.0% くらい。余裕。

0 件のコメント:

コメントを投稿