環境
- ffmpeg: V5.1, MacOSX: Darwin Kernel Version 21.6.0, bash: 5.1.16(1)
現象
- ffmpegでトリミングするために対象の複数ファイルを文字列として渡すと、なぜか変数の文字列の最初が壊れました.コードは適当ですが、こんな感じの現象です.
cat $f_log.ffmpeg \
| while read -r f_input t_start f_dist; do
if [ ! -f $f_input ]; then
echo "No $f_input"
else
ffmpeg -y -i $f_input -ss $t_start -t 3 -ac 1 $f_dist
fi
done
No var/data/A.mp3
No r/data/B.mp3
...(最初の数文字が消えています)
対応策
- 子プロセス化することで回避できました.
( echo "ffmpeg -y -i $f_input -ss $t_start -t 3 -ac 1 $f_dist" | sh -C )
なぜ、ffmpegは変数を変えてしまうのか理由は知りませんが(バグ?)、もし、他人様ツールでシェル変数が意図せず変わってしまうことがありましたら、子プロセス化することご検討くださいませ.
どなたの役にたちましたら幸いです