我编写了一个 shell 脚本来转换许多视频文件,并在文件名后附加一些内容来保存它们。该脚本有效,但它似乎随机跳过文件,而且很多。
当我重新运行脚本时,它会转换之前跳过的文件。我怎样才能让它停止跳过文件?
workingDir=/home/user/Videos
# get list of files to convert
find /video/folder -iname "*.mp4" > $workingDir/file_list
# convert files
cat $workingDir/file_list | while read LINE; do
# FFmpeg often cuts off the beginning of this line
echo "$(dirname "$LINE")/$(basename "$LINE")"
if /usr/bin/ffmpeg -n -loglevel panic -v quiet -stats -i "$LINE" \
-c:v libx264 -vf scale="trunc(oh*a/2)*2:320" \
-pix_fmt yuv420p -preset:v slow -profile:v main -tune:v animation -crf 23 \
"$(dirname "$LINE")/$(basename "$LINE" \.mp4)"_reencoded.mp4 2>/dev/null; then
echo "Success: $(dirname "$LINE")/$(basename "$LINE")" >> $workingDir/results
else
echo "Failed: $(dirname "$LINE")/$(basename "$LINE")" >> $workingDir/results
fi
done
Run Code Online (Sandbox Code Playgroud)
一个问题似乎是 FFmpeg 干扰了脚本。FFmpeg 输出通常会切断下一个命令的开头,即使没有显示输出。这可以通过 if 语句之前的 echo 行来证明,该行经常被截断。但即使对于没有被切断的行,他们中的大多数也会无缘无故地被跳过。
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |