【发布时间】:2019-04-27 09:50:13
【问题描述】:
这是我的代码:
#!/bin/bash
# https://askubuntu.com/a/343753
# http://wiki.bash-hackers.org/commands/builtin/read
# (use null character to separate a list of filenames)
# (sets IFS in the environment for just the read command)
log=./log.txt
OLDIFS=$IFS
find $1 -type f -name '*.MTS' -print0 |
while IFS= read -r -d '' input; do
# set IFS to null string to preserve whitespace when $input is used
IFS=''
echo ""
echo "input='${input}'"
echo "`sha1sum "${input}"`"
output="${input%.MTS}.mp4" # change extension to MTS
ffmpeg -i "$input" -n -c:v copy -c:a aac -strict experimental -b:a 128k "$output" >> "$log" 2>&1
if [ $? != 0 ]; then
echo "FAILED: "$input" -> "$output""
else
touch -r "$input" "$output" # copy original file's metadata
echo "SUCCESS: "$input" -> "$output"" # indicate success
fi
done
IFS=$OLFDIFS
echo "------"
请注意输出如何根据我是否注释掉 ffmpeg 行而发生变化:
我的问题是,为什么在使用 ffmpeg 命令时,读入的第二个文件名会变得混乱?
【问题讨论】: