#author("2020-10-11T10:48:29+09:00","default:egashira","egashira")
#author("2020-10-11T11:08:44+09:00","default:egashira","egashira")
[[CentOS7]]

*ライブ配信録画 [#hb60f32f]
**nginx設定 [#k0ac4a1c]
|BGCOLOR(black):COLOR(white):|c
|[root@centos ~]# vi /usr/local/nginx/conf/nginx.conf &color(lime){← nginx設定ファイル編集};|

         # ライブ配信設定
         application live {
             live on;
 
             # 192.168.1.0/24からのみライブ配信データの受信を許可
             allow publish 192.168.1.0/24;
             deny publish all;
 
             # HLS配信設定
             hls on;
             hls_path /usr/local/nginx/html/live; # HLS(HTTP Live Streaming)ファイル作成先
             hls_fragment 10s; # HLS(HTTP Live Streaming)ファイル分割時間
 
             ライブ配信録画設定追加(ここから)
             # ライブ配信録画設定
             record all;
             record_path /usr/local/nginx/html/rec; # ライブ配信録画ファイル保存先
             record_suffix -%Y%m%d%H%M%S.flv; # ライブ配信録画ファイル名付与文字列(例:live-20170226194852.flv)
             record_max_size 50M; # ライブ配信録画1ファイルあたり最大サイズ(サイズは任意)
             exec_record_done /usr/local/bin/record_done.sh $path $filename $basename $dirname; # ライブ配信録画ファイル視聴ページ自動生成
             ライブ配信録画設定追加(ここまで)
 
         }

|BGCOLOR(black):COLOR(white):|c
|[root@centos ~]# mkdir /usr/local/nginx/html/rec &color(lime){← ライブ配信録画ファイル保存先ディレクトリ作成};|
|[root@centos ~]# chown nobody /usr/local/nginx/html/rec/ &color(lime){← ライブ配信録画ファイル保存先ディレクトリ所有者変更};|


**ライブ配信録画ファイル視聴ページ生成スクリプト作成 [#y567484b]
ライブ配信録画ファイル一覧ページ(後述)への表示用サムネイル画像作成、ライブ配信録画ファイルのFLV形式⇒MP4形式への変換、ライブ配信録画ファイル視聴ページ生成を一括して行うスクリプトを作成する。

|BGCOLOR(black):COLOR(white):|c
|[root@centos ~]# vi /usr/local/bin/record_done.sh &color(lime){← ライブ配信録画ファイル視聴ページ生成スクリプト作成};|

 #!/bin/bash
 
 # ${1} path - recorded file path (/tmp/rec/mystream-1389499351.flv)
 # ${2} filename - path with directory omitted (mystream-1389499351.flv)
 # ${3} basename - file name with extension omitted (mystream-1389499351)
 # ${4} dirname - directory path (/tmp/rec)
 
 # 録画ファイルのサムネイル画像作成
 JPG_NAME=${4}/${3}.jpg
 ffmpeg -y -i ${1} -ss 1 -vframes 1 -f image2 ${JPG_NAME} > /dev/null 2>&1
 
 # MP4形式へ変換
 ffmpeg -y -i ${1} -vcodec copy -acodec copy ${4}/${3}.mp4
 [ $? -eq 0 ] && rm -f ${1}
 
 # 録画ファイル視聴ページ作成
 HTML_PATH=`echo ${4} | sed -e 's/\/usr\/local\/nginx\/html\([^ ]*\)/\1/p' -e d`
 HTML_NAME=${4}/${3}.html
 FLV_NAME=${3}
 echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' > ${HTML_NAME}
 echo '  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' >> ${HTML_NAME}
 echo '<html xmlns="http://www.w3.org/1999/xhtml">' >> ${HTML_NAME}
 echo '<head>' >> ${HTML_NAME}
 echo '    <title>'${FLV_NAME}'</title>' >> ${HTML_NAME}
 echo '    <link href="//vjs.zencdn.net/5.11.6/video-js.css" rel="stylesheet">' >> ${HTML_NAME}
 echo '</head>' >> ${HTML_NAME}
 echo '<body>' >> ${HTML_NAME}
 echo '    <video id="'${FLV_NAME}'" class="video-js vjs-default-skin" autoplay="autoplay" controls="controls" width="320" height="240" data-setup="{}">' >> ${HTML_NAME}
 echo '        <source src="'${HTML_PATH}/${FLV_NAME}.mp4'">' >> ${HTML_NAME}
 echo '        <p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-sup
 port/" target="_blank">supports HTML5 video</a></p>' >> ${HTML_NAME}
 echo '    </video>' >> ${HTML_NAME}
 echo '</body>' >> ${HTML_NAME}
 echo '</html>' >> ${HTML_NAME}
 
 
 # 録画ファイルの更新日時をファイル作成日時に変更
 tmp=`echo ${3} | sed -e 's/live-\([^ ]*\)/\1/p' -e d`
 datetime=`echo ${tmp:0:4}`/`echo ${tmp:4:2}`/`echo ${tmp:6:2}`' '`echo ${tmp:8:2}`:`echo ${tmp:10:2}`:`echo ${tmp:12:2}`
 touch -d "${datetime}" ${4}/${3}.*

|BGCOLOR(black):COLOR(white):|c
|[root@centos ~]# chmod +x /usr/local/bin/record_done.sh &color(lime){← ライブ配信録画ファイル視聴ページ生成スクリプトへ実行権限付加};|
|[root@centos ~]# systemctl restart nginx &color(lime){← nginx再起動};|


**ライブ配信録画確認 [#h994a934]
http://サーバー名:8080/rec/live-YYYYMMDDHHMMSS.htmlへアクセスしてライブ配信録画が視聴できること
http://サーバー名/rec/live-YYYYMMDDHHMMSS.htmlへアクセスしてライブ配信録画が視聴できること

※ライブ配信録画がrecord_pathで指定されたディレクトリ(/usr/local/nginx/html/rec)に作成され、録画ファイルのサイズがrecord_max_sizeで指定したサイズになるとexec_record_doneで指定されたスクリプト(/usr/local/bin/record_done.sh)が実行されることにより、ライブ配信録画ファイル視聴ページが作成される


**ライブ配信録画ファイル一覧ページ生成スクリプト作成 [#o4733844]
|BGCOLOR(black):COLOR(white):|c
|[root@centos ~]# vi /etc/cron.hourly/record_list &color(lime){← ライブ配信録画ファイル一覧ページ生成スクリプト作成※1時間ごとに自動実行されるディレクトリへ作成};|

 #!/bin/bash
 
 RECORD_PATH=`grep record_path /usr/local/nginx/conf/nginx.conf|awk '{print $2}'|tr -d ";"`
 
 # 24時間以前のライブ配信録画関連ファイル(録画ファイル本体、サムネイル、視聴ページ)を削除する
 tmpwatch -m 24 ${RECORD_PATH}
 
 # ライブ配信録画ファイル一覧ページ生成
 HTML_PATH=`echo ${RECORD_PATH} | sed -e 's/\/usr\/local\/nginx\/html\([^ ]*\)/\1/p' -e d`
 cd ${RECORD_PATH}
 ls *.mp4 > /dev/null 2>&1 ; [ $? -ne 0 ] && exit
 
 rm -f ${RECORD_PATH}/index.html
 echo "<html>" >> ${RECORD_PATH}/index.html
 echo "<head>" >> ${RECORD_PATH}/index.html
 echo "<title>LIVE RECORD LIST</title>" >> ${RECORD_PATH}/index.html
 echo "</head>" >> ${RECORD_PATH}/index.html
 echo "<body>" >> ${RECORD_PATH}/index.html
 echo "<table border=1 style=\"border-collapse:collapse;\">" >> ${RECORD_PATH}/index.html
 
 for mp4 in `ls *.mp4`
 do
     fuser ${mp4} > /dev/null 2>&1
     [ $? -eq 0 ] && continue
     jpg=`basename ${mp4} .mp4`.jpg
     html=`basename ${mp4} .mp4`.html
     datetime=`ls -l --time-style="+%Y/%m/%d %H:%M:%S" ${mp4}|awk '{print $6 " " $7}'`
     echo "<tr><td><a href=\"${HTML_PATH}/${html}\" target=\"_blank\"><img src=\"${jpg}\" style=\"width:320px; height:240px;\"></a></td>" >> ${RECORD_PATH}/index.html
     echo "<td>${datetime}</td></tr>" >> ${RECORD_PATH}/index.html
 done
 
 echo "</table>" >> ${RECORD_PATH}/index.html
 echo "</body>" >> ${RECORD_PATH}/index.html
 echo "</html>" >> ${RECORD_PATH}/index.html

|BGCOLOR(black):COLOR(white):|c
|[root@centos ~]# chmod +x /etc/cron.hourly/record_list &color(lime){← ライブ配信録画ファイル一覧ページ生成スクリプトへ実行権限付加};|
|[root@centos ~]# /etc/cron.hourly/record_list &color(lime){← ライブ配信録画ファイル一覧ページ自動生成(初回実行)};|


**ライブ配信録画ファイル一覧ページ確認 [#vce29ffd]
-http://サーバー名:8080/rec/へアクセスしてライブ配信録画ファイル一覧が表示されること
-http://サーバー名/rec/へアクセスしてライブ配信録画ファイル一覧が表示されること
-ライブ配信録画ファイル一覧から任意のライブ配信録画ページへアクセスしてライブ配信録画が視聴できること

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS