YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2021-06-09 (水)


[一語一絵/IT系]

NVENC実戦配備 / 2017-02-04 (土)

昨日、NVENCに対応したUbuntuでのハードウェアエンコード環境ができたので、溜まったtsファイルをエンコードしていくことに。

PT2とPT3の複数実装で録画は並列でできるものの、GPUエンコードは並列処理できないと思われるので予約録画の流れでエンコードさせる仕組みは見直し、録画スクリプトはtsファイルを/mnt/ts_pool/10_recordedに移動させたところで終了とする。

yano@GT110b:~$ ll /mnt/ts_pool/
total 76
drwxr-xr-x  6 yano family    97 Feb  3 22:00 ./
drwxr-xr-x 14 root root    4096 Dec  9 17:23 ../
drwxrwxrwx  2 yano family 49152 Feb  4 22:45 10_recorded/
drwxrwxrwx  2 yano family  4096 Feb  4 09:39 19_encode_failed/
drwxrwxrwx  2 yano family 12288 Feb  4 22:45 20_encoded/
drwxrwxrwx  2 yano family 16384 Feb  4 08:02 30_ts_files/
yano@GT110b:~$
10分ごとにcronで起動する周期タスク~/etc/cron.sh/encode_mp4.cron/mnt/ts_pool/10_recordedから古い順に数本ずつピックアップして、エンコードできたのは/mnt/ts_pool/20_encodedに、エラーになったものは/mnt/ts_pool/19_encode_failedに移動させていく仕組みに。PIDFILEを使って重複起動しないようにするのを忘れずに。
yano@GT110b:~$ cat ~/etc/cron.sh/encode_mp4.cron
#!/bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin
NUM_FILES=5
EXT_TS=".ts"

PIDFILE=/home/yano/run/`basename $0`.pid

UUID=`id | sed 's/uid=\([0-9]*\)(.*/\1/'`;
[ $UUID -eq 0 ] && PIDFILE=/var/run/`basename $0`.pid;

if [ -e ${PIDFILE} ];
then
    exit;
fi
echo $$ > ${PIDFILE}
trap "/bin/rm -f ${PIDFILE}; exit" 1 2 3 15

CONFIGFILE=/etc/default/epgrec
# source config info
[ -r ${CONFIGFILE} ] && . ${CONFIGFILE}

TS_FILES=`ls -1 ${TS_RECORDED}/*${EXT_TS} | head -${NUM_FILES}`

for f in ${TS_FILES};
do
    /home/yano/bin/ts2mp4_nvidia.sh $f 2>&1 > /dev/null
    if [ $? -eq 0 ];
    then
        chown ${OWNER} ${MP4DIR}/`basename $f ${EXT_TS}`.mp4;
        mv $f ${TS_ENCODED};
    else
        mv $f ${TS_ENCODE_FAILED};
    fi;
done

if [ -e ${PIDFILE} ];
then
    rm -f ${PIDFILE};
fi
yano@GT110b:~$

【参照】
●www.nodoka.org http://www.nodoka.org/
録画サーバ構築 QSVエンコード Linux編 2016/05/27
録画サーバ構築 NVENCエンコード Linux編 2016/06/15
●FFmpeg https://ffmpeg.org/
CompilationGuide/Ubuntu
●Wikipedia http://ja.wikipedia.org/wiki/
LGA1150
Haswellマイクロアーキテクチャ
Broadwellマイクロアーキテクチャ
LGA1151
Skylakeマイクロアーキテクチャ