我有很多图像 (>11,000),我想用 avconv 创建视频作为延时视频。使用 ffmpeg,我做了以下技巧:
ffmpeg -r 25 -i "/mnt/stora/dahopi/Pictures/Gartencam/%*.jpg" \
-vf scale=800:600 -c:v mpeg4 -vtag xvid -qscale:v \
10 gartencam.avi
但是使用 avconv 则不行。我认为问题出在文件选择器上%*.jpg
,我想知道我是否有机会在不修改文件名的情况下创建视频。
如果没有的话,您知道其他可以达到此目的的工具吗?
答案1
恐怕您说的没错,错误是由文件选择器引起的。引用手册:
For creating a video from many images: avconv -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi The syntax "foo-%03d.jpeg" specifies to use a decimal number composed of three digits padded with zeroes to express the sequence number. It is the same syntax supported by the C printf function, but only formats accepting a normal integer are suitable.
如果你愿意,你可以从大于 0 的整数开始:
-start_number start Specify the first number in the sequence
您不需要真正重命名:您可以使用命令创建符号链接ln
,这只会占用磁盘上很少的空间。
我建议你在尝试脚本之前备份你的图片
您可以尝试使用这个 bash 脚本:
#! /bin/bash
INPUTDIR="$1"
OUPUTDIR="$2"
SORTEDLIST="$(cd "$INPUTDIR" && ls -1 | sort -n)"
COUNT="$(echo -e "$SORTEDLIST"|wc -l)"
echo "Found $COUNT files"
ZEROES="$(echo -e "$COUNT"|wc -c)" # (will count \n)
echo "Using $ZEROES characters to display integers"
COUNTER="0"
for file in $SORTEDLIST; do
ID="$(printf "%0${ZEROES}d" "$COUNTER")"
echo "ln -s $INPUTDIR/$file $OUPUTDIR/$ID.jpg"
ln -s "$INPUTDIR/$file" "$OUPUTDIR/$ID.jpg"
COUNTER=$((COUNTER + 1))
done
此脚本假定您的所有图像都位于一个目录中,该目录仅包含您想要包含在视频中的图像。要使用它:
- 创建一个包含您的链接的输出目录:
mkdir output
- 执行它
./script.sh nameofthefoldercontainingyourimages output