よいっちの作業したアレコレ

よいっちの作業したことのメモ書き
その他も色々書くかもしれない

2019年09月

recdvb+Mirakurun+EPGStationを導入したTV録画サーバーに
PLEX Media Serverを導入して、エンコード済ファイルの視聴をする

サーバー上のMP4ファイルはSambaを介してWindowsパソコンに
データ移動して視聴している
基本は上記手順だが、見たら削除するつもりのドラマやアニメ
はサーバーからストリーミング視聴したい
ついでに出先でiPhoneから見れたら嬉しい

と、言うことでPLEX Media Serverを導入してみる

Linuxサーバーから下記サイトにアクセスし、インストールファイルを
ダウンロードする
PLEX Media Server

ダウンロードしたファイルをrootのrootディレクトリに移動して
下記コマンドでインストールする
XXX部分はダウンロードファイル毎に異なるので注意
[root@yoitti0rinne ~]# sudo rpm -ivh plexmediaserver-XXX.rpm
[root@yoitti0rinne ~]# sudo systemctl enable plexmediaserver
[root@yoitti0rinne ~]# sudo systemctl start plexmediaserver
ブラウザから以下のアドレスにアクセスすると
初期設定が始まる
http://localhost:32400/web/index.html#
初期設定は流れに沿ってやって行けば大丈夫

注意点
/home/username/sambaがメディアフォルダとして認識されなかった為、
EPGStationの録画フォルダを/home/sambaに変更した

リモートアクセス設定では、32400番以外のポート開放をする
サーバーのポート開放とルーターのポート開放をすること

これでiPhoneのPLEXアプリからアクセスできるようになった
・・・が、iPhoneのPLEXアプリは無料だと1分しか視聴できなかった
600円のお支払いで無制限に視聴できるようになるらしい
必要になったときに購入したらいいか

と言う感じで導入終了
本日はここまで

追記:2019/9/29 18:05
iPhoneからはアプリごしじゃなくてブラウザごしに視聴したら良いみたい
多少不便ではあるけど、600円支払いたくないでござる
あと、Safariからだと繋がらなかったのでEdgeでブックマークしておいた


このエントリーをはてなブックマークに追加

LAN内からもドメイン名でサーバーにアクセスできるようにする

DNSサーバー構築

recursion yes;
を多重書きしないこと
/var/named/chroot/var/named/下のファイルは削除しておくこと



今日は少ないけどこの辺で。
と言うか、Motionって言う動体検知ソフトを入れようとしたけど
動かせなかったのですorz

このエントリーをはてなブックマークに追加

ニコニコ生放送やYouTube Liveのような生放送サーバーを構築する
作業内容は以下サイトを参考にする
動画配信サーバー構築

インストール前に以下のパッケージを入れておくこと
[root@localhost ~]# yum install gcc wget pcre pcre-devel openssl openssl-devel



ライブ動画視聴用ページ作成にて、動画の解像度を変更する
変更箇所のみ
video  width="960" height="540" 
注記:nginx設定時に192.168.1.0部分を自環境に合わせること

ライブ配信録画

録画視聴画面を960x540に変更
サムネイルのサイズは320x180に変更
保存期間を168時間(7日間)に変更

今日のサーバー作業はこの辺で終了

追記:2019/9/26 20:50
ライブ配信録画の最大ファイルサイズを大きくすること
とりあえず、50GBに設定しておいた
このエントリーをはてなブックマークに追加

本日は、サーバー構築をほっぽりだして、筋トレ用動画を作成しておりました。




よいっちは最近、Wii Fitを使ったダイエットにチャレンジしております。
そこに、上記動画による筋トレを追加しました。
アニメで紹介される筋トレと侮るなかれ。
かなりきつかったです。
これを続けて、太りにくい身体作りを続けていきます。


さて、運動後には30分以内にタンパク質の摂取が良いらしいのですが
よいっちはプロテインを使うことにしました。

プロテインって粉っぽくて変な味して不味いとのイメージだったんですが、
これが全く逆で物凄く美味しいのです。
プロテイン飲みたさに筋トレすると言っても過言ではありません。


よいっちの一番のおすすめプロテインは、
ビーレジェンドのミルキー味です。

これが本当に美味しい。
牛乳で割って、完全に飲むミルキーです。
ミルキーが大好き!練乳系甘~いもの大好き!な人におすすめです。

次点で今飲んでいるのはかめはめ波味のプロテインです。


これもなかなか美味しいです。
味は、水で割るとエナジードリンク。
牛乳で割るとフルーツヨーグルト。
ってな感じです。
みんなも、プロテインかめはめ波味を飲んで、かめはめ波を撃とう!(嘘




このエントリーをはてなブックマークに追加

TV録画サーバーEPGStationをインストールする
[root@localhost ~]# git clone https://github.com/l3tnun/EPGStation.git
[root@localhost ~]# cd EPGStation
[root@localhost EPGStation]# npm install
[root@localhost EPGStation]# npm run build
[root@localhost EPGStation]# cp config/config.sample.json config/config.json
[root@localhost EPGStation]# cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
[root@localhost EPGStation]# cp config/serviceLogConfig.sample.json config/serviceLogConfig.json

config/config.jsonを編集する 該当箇所だけ
    "ffmpeg": "/usr/bin/ffmpeg",
    "ffprobe": "/usr/bin/ffprobe",
    "streamFilePath": "/tmp",
    "recorded": "/home/usrname/samba",

    "mpegTsStreaming": [
        {
            "name": "1280x720",
            "cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -c:a aac -strict -2 -ar 48000 -ab 192k -ac 2 -c:v libx264 -s 1280x720 -vf yadif -preset veryfast -aspect 16:9 -vb 3000k -f mpegts pipe:1"
        },
{
            "name": "720x480",
            "cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -c:a aac -strict -2 -ar 48000 -ab 128k -ac 2 -c:v libx264 -s 720x480 -vf yadif -preset veryfast -aspect 16:9 -vb 1500k -f mpegts pipe:1"
        },

"recordedHLS": [
        {
            "name": "1280x720",
            "cmd": "%FFMPEG% -dual_mono_mode main -i %INPUT% -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -threads auto -c:a aac -strict -2 -ar 48000 -ab 192k -ac 2 -c:v libx264 -s 1280x720 -preset veryfast -aspect 16:9 -vb 3000k -flags +loop-global_header %OUTPUT%"
        },
{
            "name": "720x480",
            "cmd": "%FFMPEG% -dual_mono_mode main -i %INPUT% -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -threads auto -c:a aac -strict -2 -ar 48000 -ab 128k -ac 2 -c:v libx264 -s 720x480 -preset veryfast -aspect 16:9 -vb 1500k -flags +loop-global_header %OUTPUT%"
        },
        {
            "name": "720x480(h265)",
            "cmd": "%FFMPEG% -dual_mono_mode main -i %INPUT% -f hls -hls_time 3 -hls_list_size 0 -hls_allow_cache 1 -hls_segment_type fmp4 -hls_fmp4_init_filename stream%streamNum%-init.mp4 -hls_segment_filename stream%streamNum%-%09d.m4s -c:a aac -strict -2 -ar 48000 -ab 128k -ac 2 -c:v libx265 -s 720x480 -preset veryfast -aspect 16:9 -vb 350k -tag:v hvc1 %OUTPUT%"
        }

    "liveHLS": [
        {
            "name": "1280x720",
            "cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -threads auto -c:a aac -strict -2 -ar 48000 -ab 192k -ac 2 -c:v libx264 -s 1280x720 -preset veryfast -aspect 16:9 -vb 3000k -flags +loop-global_header %OUTPUT%"
        },
        {
            "name": "720x480",
            "cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -threads auto -c:a aac -strict -2 -ar 48000 -ab 128k -ac 2 -c:v libx264 -s 720x480 -preset veryfast -aspect 16:9 -vb 1500k -flags +loop-global_header %OUTPUT%"
        },
        {
            "name": "320x180",
            "cmd": "%FFMPEG% -re -dual_mono_mode main -i pipe:0 -f hls -hls_time 3 -hls_list_size 17 -hls_allow_cache 1 -hls_segment_filename %streamFileDir%/stream%streamNum%-%09d.ts -threads auto -c:a aac -strict -2 -ar 48000 -ab 48k -ac 2 -c:v libx264 -s 320x180 -preset veryfast -aspect 16:9 -vb 100k -maxrate 110k -bufsize 1000k -flags +loop-global_header %OUTPUT%"
        }

    "liveMP4": [
        {
            "name": "1280x720",
            "cmd": "%FFMPEG% -dual_mono_mode main -re -i pipe:0 -threads 0 -c:a aac -strict -2 -ar 48000 -ac 2 -ab 192k -c:v h264 -s 1280x720 -vb 3000k -filter:v yadif -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
        },
        {
            "name": "720x480",
            "cmd": "%FFMPEG% -dual_mono_mode main -re -i pipe:0 -threads 0 -c:a aac -strict -2 -ar 48000 -ac 2 -ab 128k -c:v h264 -s 720x480 -vb 1500k -filter:v yadif -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1"
        }

        "mp4": [
            {
                "name": "1280x720",
                "cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -threads 0 -c:v h264 -c:a aac -strict -2 -ar 48000 -ac 2 -s 1280x720 %VB% %VBUFFER% %AB% %ABUFFER% -filter:v yadif -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1",
                "vb": "3000k",
                "ab": "192k"
            },
            {
                "name": "640x360",
                "cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -threads 0 -c:v h264 -c:a aac -strict -2 -ar 48000 -ac 2 -s 640x360 %VB% %VBUFFER% %AB% %ABUFFER% -filter:v yadif -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1",
                "vb": "1500k",
                "ab": "128k"
            }

        "mpegTs": [
            {
                "name": "1280x720 (H.264)",
                "cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -threads 0 -filter:v yadif -c:v h264 -c:a aac -strict -2 -ar 48000 -ac 2 -s 1280x720 %VB% %VBUFFER% %AB% %ABUFFER% -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -y -f mpegts pipe:1",
                "vb": "3000k",
                "ab": "192k"
            },
            {
                "name": "640x360 (H.264)",
                "cmd": "%FFMPEG% -dual_mono_mode main %RE% -i pipe:0 -threads 0 -filter:v yadif -c:v h264 -c:a aac -strict -2 -ar 48000 -ac 2 -s 640x360 %VB% %VBUFFER% %AB% %ABUFFER% -profile:v baseline -preset veryfast -tune fastdecode,zerolatency -y -f mpegts pipe:1",
                "vb": "1500k",
                "ab": "128k"
            }
config/enc.jsを編集する 該当箇所だけ
// 字幕データを含めたストリームをすべてマップ
//Array.prototype.push.apply(args, ['-map', '0', '-ignore_unknown', '-max_muxing_queue_size', maxMuxingQueueSize, '-sn']);

// その他設定
Array.prototype.push.apply(args,[
    '-preset', preset,
    '-aspect', '16:9',
    '-c:v', codec,
    '-crf', crf,
    '-f', 'mp4',
    '-c:a', 'aac',
    '-ar', '48000',
    '-ab', audioBitrate,
    '-ac', '2',
    '-strict', '-2',
    output
]);
EPGStationを起動する
[root@localhost EPGStation]# pm2 startup
[root@localhost EPGStation]# pm2 start dist/server/index.js --name "epgstation"
[root@localhost EPGStation]# pm2 save
epgstationがonlineになっていればOK

番組表と視聴確認をして、完成

追記:2019/9/21 18:52
エンコード周りの設定ミス
修正
これでいけるはず

追記:2019/9/21 19:05
ライブエンコードの字幕処理を削除
しないとffmpegが動かないらしい、通りで・・・
修正
このエントリーをはてなブックマークに追加

↑このページのトップヘ