# [メタ情報] # 識別子: iPhoneのmov動画を360pに圧縮する_exe # システム名: 未分類 # 技術種別: Misc # 機能名: Misc # 使用言語: シェルスクリプト # 状態: 実行用 # [/メタ情報] 要約:Automatorで実行するシェルスクリプト。指定した動画を順に処理し、360pに縮小して再出力する。音声コーデックとビットレートをffprobeで取得し、AACの場合は再エンコードせずコピー、その他はAACで再エンコードする。ビットレートが不明な場合は256kを設定。ffmpegでH.264圧縮・高速起動対応動画を生成する。 Automator シェルスクリプトを実行 /bin/bash 入力の引き渡し方法:引数として for f in "$@"; do dir=$(dirname "$f") filename=$(basename "$f") name="${filename%.*}" ext="${filename##*.}" output="${dir}/${name}_360p.${ext}" # 音声のコーデック名とビットレートを取得 acodec=$(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name \ -of default=nw=1:nk=1 "$f") abps=$(ffprobe -v error -select_streams a:0 -show_entries stream=bit_rate \ -of default=nw=1:nk=1 "$f") # ビットレート(kbps)に整形(取得できない時は 256k を既定) if [ -n "$abps" ] && [ "$abps" -gt 0 ]; then ab="$(( (abps + 500) / 1000 ))k" else ab="256k" fi # AACならコピー、AAC以外なら元ビットレート相当でAACへ再エンコード if [ "$acodec" = "aac" ]; then aopts="-c:a copy" else aopts="-c:a aac -b:a $ab" fi /usr/local/bin/ffmpeg -y -i "$f" \ -vf "scale=iw*min(1\,360/ih):-2" \ -c:v libx264 -crf 23 -preset veryfast -pix_fmt yuv420p \ $aopts -movflags +faststart \ "$output" done