ディレクトリ内のTSファイルをまとめてエンコード掛けるスクリプト

#! /bin/bash

export HOME="/home/ゆーざ名"
fileary=()
dir=$1
count=0

if [ $# != 1 ]; then
	echo 引数エラー
	exit 0
fi

if [ ! -e $dir ]; then
	echo ディレクトリではありません
	exit 0
fi

echo 対象ファイル

while read -r f; do

	if [[ "$f" == *.ts ]]; then

		# ファイル一つ毎の処理
		echo "$f"
		count=$((count+1))

	fi


done < <(find $dir -mindepth 1 -maxdepth 1)

echo "対象数 : ${count}"

read -p "いくつエンコードしますか(0-${count}) ; " nom

#case "$yn" in [yY]*) ;; *) echo "終了します" ; exit ;; esac

expr "$nom" + 0 >&/dev/null
ret=$?
if [ $ret -eq 2 ];then
	echo 数値ではありません
	exit 0
fi

if [ $nom -lt 0 ] || [ $nom -gt $count ]; then
	echo 入力エラー
	exit 0
fi

if [ $nom -eq 0 ]; then
	echo	エンコードを中止します
	exit 0
fi

echo エンコードを開始します

while read -r f; do
	if [[ "$f" == *.ts ]]; then
		jlse -i "$f" -e -t cutcm_logo -o " -c:v h264_v4l2m2m -vf scale=1920:1080,pullup=jb=54 -preset veryfast -acodec aac -ab 320K -b:v 4M -aspect 16:9 -r 24000/1001 -bsf:a aac_adtstoasc -tune animation" -r </dev/null
#		echo "$f"	# >> "${dir%/}/log.txt" ↑エンコードの命令(自分のとこVerなので各自行うものを入れる)
		nom=$((nom -1))
		if [ $nom = 0 ]; then
			DATE=`TZ='Asia/Tokyo' date`
			echo "指定数完了 ${DATE}"
			exit 0
		fi
	fi
done < <(find $dir -mindepth 1 -maxdepth 1)

自分で書いてて使い方だいぶ忘れてるけども
ディレクトリを引数としてスクリプト実行
→対象ファイルのリストが出てくる
→いくつエンコードするか数字を入力する
→指定されてるエンコードを実行✕指定数
→終わったら終わった時間を表示
みたいなやつだったかと。(テスト用の出力とか残ってますが)
録画鯖を15時とかに自動で再起動かけてたのでscreen上で起動させて朝から昼過ぎまで流すみたいなことをしてました。参考までに。

この記事が気に入ったらサポートをしてみませんか?