Mac OSXでmp3をflvにしてYoutubeにアップする簡単な方法(3)

Apple Mac
(お約束)ご利用は自己責任でお願いします

Mac OSXでmp3をflvにしてYoutubeにアップする簡単な方法(2)を書いたんですが、またバージョンアップしました。

  • いろいろな音楽ファイル、ムービーファイルに対応。
  • エラーになったときに分かるような処理を入れた

 

例によって、なるべく分かりやすく書いたので、余分な命令もあると思います。適時削って下さい。

#!/bin/sh
#
##########################################################
# 適当な画像をつけて音楽ファイルをムービー化するためのシェルスクリプト
# https://mcbrain.jp/3145/
# (お約束)ご利用は自己責任で。

# 改変も自由ですが、自己責任で。
#
###############################################
# ディレクトリの変更
###############################################
echo “作業するディレクトリを指定して下さい”
read WORK_DIR
# 作業ディレクトリを固定するときは以下にて指定

#WORK_DIR=/Users/xxxx/yyy/zzz
cd $WORK_DIR
#WORK_DIR内のファイル名の半角全角スペースを_に変換
for tmp_fname in *.* ; do mv “$tmp_fname” `echo $tmp_fname | sed -e “s/ /_/g” | sed -e “s/ /_/g”`; done
#
###############################################
# ムービーに埋め込みたい画像ファイルをjpgに変更
###############################################
echo “ムービーに埋め込みたい画像ファイルを指定して下さい”
read WORK_IMAGE
# jpgに変換
convert $WORK_IMAGE $WORK_DIR/tmp.jpg
#
###############################################
#音楽ファイルの指定
###############################################
echo “ムービー化したい音楽ファイル\(mp3かm4a\)を指定して下さい”
read MUSIC_FILE
#
MUSIC_FILE_FULL_NAME=${MUSIC_FILE##*/} #ファイル名だけ取得
echo “ファイル名: $MUSIC_FILE_FULL_NAME”

MUSIC_FILE_NAME=${MUSIC_FILE_FULL_NAME%.*} #拡張子無しのファイル名
echo “拡張子無しのファイル名: $MUSIC_FILE_NAME”

MUSIC_FILE_EXTENSION=${MUSIC_FILE_FULL_NAME##*.} #拡張子だけ取得
echo “拡張子: $MUSIC_FILE_EXTENSION”

MUSIC_FILE_EXTENSION=`echo $MUSIC_FILE_EXTENSION | tr “[:upper:]” “[:lower:]“` #のちの処理のために拡張子を小文字に統一する
#echo “小文字変換: $MUSIC_FILE_EXTENSION”

if [ "$MUSIC_FILE_EXTENSION" = "m4a" ]; then #m4aならmp3に変換する
# mp3に変換
echo “———–mp3に変換 スタート——————”
ffmpeg -i $MUSIC_FILE -ab 192k -f mp3 $WORK_DIR/tmp.mp3
echo “———–mp3に変換 終わり ——————”
else
#それ以外つまりmp3ならファイル名をtmp.mp3にしてcpする(後処理を簡略化するため)
cp $MUSIC_FILE $WORK_DIR/tmp.mp3
fi

###############################################
# ムービーの再生時間を設定
###############################################
# 変数にFFMPEG_OutPutコマンドの出力値をDuration部分だけ抜き出して格納

#Duration: 00:03:52.69, start: 0.000000, bitrate: 320 kb/s のように抜き出すことができる
FFMPEG_OutPut=`ffmpeg -i $WORK_DIR/tmp.mp3 2>&1 | grep Duration`

echo “——— ムービーの再生時間を設定 ——————–”
echo “ffmpegの出力= “$FFMPEG_OutPut
FFMPEG_Hour=`echo “$FFMPEG_OutPut” | cut -c 13-14`
echo “時間= “$FFMPEG_Hour
FFMPEG_Min=`echo “$FFMPEG_OutPut” | cut -c 16-17`
echo “分= “$FFMPEG_Min
FFMPEG_Sec=`echo “$FFMPEG_OutPut” | cut -c 19-20`
echo “秒= “$FFMPEG_Sec

# ムービーの再生時間を設定
MOVIE_TIME=`expr \( $FFMPEG_Hour \* 60 \* 60 \) + \( $FFMPEG_Min \* 60 \) + $FFMPEG_Sec + 5` #秒数計算。最後に足しているのは秒以下を切り上げするためと曲の終わりに少し余裕をもたせるため
#
# 作成時間を取得してファイル名にするときは下のを使う
#MOVIE_FILENAME=`date +%H-%M-%S`
#
# 音楽ファイル名.flvというファイル名にするときは下のを使う 
MOVIE_FILENAME=`basename $MUSIC_FILE`

#
###############################################
# aviファイルを作成
###############################################
echo “———-aviファイルを作成 スタート ——————-”
ffmpeg -f image2 -loop_input -t $MOVIE_TIME -r 4 -vcodec copy -i $WORK_DIR/tmp.jpg $WORK_DIR/tmp.avi
echo “———-aviファイルを作成 終わり ——————-”
#
###############################################
# aviファイルをflvに変換
###############################################
echo “————aviファイルをflvに変換 スタート —————–”
ffmpeg -i $WORK_DIR/tmp.avi $WORK_DIR/tmp.flv
echo “————aviファイルをflvに変換 終わり —————–”
#

###############################################
# flvファイルを作成
###############################################
echo “————-flvファイルを作成 スタート —————-”
ffmpeg -vcodec copy -acodec copy -i $WORK_DIR/tmp.flv -i $WORK_DIR/tmp.mp3 $WORK_DIR/$MOVIE_FILENAME.flv
echo “————-flvファイルを作成 終わり —————-”
#
###############################################
# いらないファイルをお掃除
rm -f $WORK_DIR/tmp.jpg $WORK_DIR/tmp.avi $WORK_DIR/tmp.flv $WORK_DIR/tmp.mp3
# Growlにて通知
growlnotify -m flv変換完了

echo “—————————–”
echo ” 処理終了”
echo “—————————–”

 

文字コードはUTF-8。改行コードはLFです。

コメント

タイトルとURLをコピーしました