MOVのファイル名変換スクリプトをmkvのファイル名変換に流用
#!/bin/bash
if [ ! "${1##*\.}" = "mkv" ] && [ ! "${1##*\.}" = "MKV" ]; then
echo "movではありません。"
exit 1
fi
filename=`echo $1 |sed -e 's/\ /_/g'`
filename=`echo $filename |sed -e 's/\://g'`
mv "`pwd`/$1" "`pwd`/${filename}"
#fdate=`ffmpeg -i "$1" 2>&1 |grep '.*creation_time.*' | head -1|sed "s/.*\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)[ _]\([0-9]\{2\}\).\([0-9]\{2\}\).\([0-9]\{2\}\)\.*/\1-\2-\3 \4:\5:\6/"`
#fdate=`ffprobe -i $filename -show_streams -print_format json |jq '.streams[].tags.creation_time' |ruby -ne 'require "time"; puts Time.parse($_).getlocal.strftime("%Y/%m/%d/%H%M")'|head -1`
fdate=`echo $1|sed -E 's/(vokoscreenNG-)([0-9]{4})-([0-9]{2})-([0-9]{2})_([0-9]{2})-([0-9]{2})-([0-9]{2}).mkv/\2/\3/\4_\5\6\7/'`
#rename=`date --date "${fdate} 9 hours" "+%Y-%m-%d_%H%S分:記録_.mp4"`
echo "ファイル名に使う文字列を指定して下さい。:"
read name
name=`echo $name|sed -e 's/ //g'`
name=`h-sanitize-text-name-arg.rb $name`
rename="${fdate}_${name}.mkv"
#rename=`ffmpeg -i "$1" 2>&1 |grep '.*creation_time.*' | head -1|sed "s/.*\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)[ _]\([0-9]\{2\}\).\([0-9]\{2\}\).\([0-9]\{2\}\)\.*/\1年\2月\3日\4時\5分\6秒の記録_${name}\.mp4/"`
mv "`pwd`/$filename" "`pwd`/${rename}"
echo "${1} ---> $rename"
#ffmpeg -i $1 |grep '.*creation_time.*' | head -1 > n
MOVのファイルではffmpegコマンドで撮影日時の取得ができていましたが、mkvでは変換がされず、元のファイル名にある日時のテキストを取得し使いました。
この記事が気に入ったらサポートをしてみませんか?