LoginSignup
7
8

More than 1 year has passed since last update.

Chinachuで録画後にNVENCする

Last updated at Posted at 2019-10-10

chinachuを使って録画後に、自動でエンコードまでやってくれるスクリプトの紹介です。

NVENCで紹介しますが、ffmpegのパラメータ書き換えれば他のエンコーダでも当然ながら動作可能ですので、録画後の処理のシェルスクリプト見本だと思っといただければ。

NVENCの導入方法については

参照のこと。

前提として chinachu がユーザー chinachu のホームディレクトリにインストールされているとする。
具体的には
/home/chinachu/chinachu
に設置してる想定で書いている。

スクリプト

/home/chinachu/chinachu/encoded-hevc_nvenc.sh
#!/bin/bash

log=/home/chinachu/chinachu/log/encode
dir_output="/encoded"
outfile=${1%.*}.m4v
mp4file=${outfile##*/}

echo -----start encoding @$(date +%Y/%m/%d/%H:%M:%S)----- >> $log
start=$(date +%s)
echo $1 >> $log

/home/chinachu/bin/ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -c:v mpeg2_cuvid -i "$1" -vf "yadif_cuda,scale_cuda=-2:720:interp_algo=lanczos" -c:v hevc_nvenc -preset slow  -rc-lookahead 30 -c:a aac -b:a 192k -r:a 48000 -tag:v hvc1 -f mp4 -aspect 16:9 "${dir_output}/${mp4file}" 2>&1 | grep "^[^f]" >> $log

end=$(date +%s)
diff=$(expr $end - $start)
echo about $(expr $diff / 60) min. >> $log
echo -----finish encoding @$(date +%Y/%m/%d/%H:%M:%S)----- >> $log
echo >> $log

exit 0

解説

log=/home/chinachu/chinachu/log/encode
ログの吐き捨て場を指定してます。あらかじめ

touch /home/chinachu/chinachu/log/encode

しておくと良いかと。

dir_output="/encoded"
エンコードしたファイルの置き場所ですので適宜書き換えてください。

/home/chinachu/bin/ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -c:v mpeg2_cuvid -i "$1" -vf "yadif_cuda,scale_cuda=-2:720:interp_algo=lanczos" -c:v hevc_nvenc -b_ref_mode 0 -preset slow -rc-lookahead 30 -c:a aac -b:a 192k -r:a 48000 -tag:v hvc1 -f mp4 -aspect 16:9 "${dir_output}/${mp4file}" 2>&1 | grep "^[^f]" >> $log

変換部分です。chinachu付属のffmpegを使わず、自分でコンパイルしたffmpegを使用してますので、ffmpegのパスは適宜書き換えてください。

-b_ref_mode 0
この部分はH265のBフレーム対応していないGPU用に使用しないよう設定を加えています。使用する場合1に変更してください。
使用できるのは7世代以降のNVENCチップ搭載GPUです

最後に

このスクリプトのパスを chinachu の config.json に食わせればおk

/home/chinachu/chinachu/config.json
  "recordedCommand": "/home/chinachu/chinachu/encoded-hevc_nvenc.sh",

これで録画後に自動でエンコードしてくれます。
NVENCだとx10ぐらいでエンコしてくれるので30分番組だと5分かからずに終わることも

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8