我正试着用FFMpeg把一段视频剪成2分钟的片段。我使用的是Ubuntu 10.10。
下面是我的代码:
#!/bin/sh
COUNTER=0
BEG=0
MIN=`ffmpeg -i ${1} 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,// | cut -d ":" -f 2`
echo $MIN
((MIN=MIN-2))
before_last_dot=${1%.*};
while [ $COUNTER -lt $MIN ]; do
((BEG=COUNTER*60))
echo "MIN:${MIN}"
echo "ffmpeg -sameq -i ${1} -ss ${BEG} -t 120 ${before_last_dot}.${COUNTER}.wmv"
((COUNTER=COUNTER+2))
doneecho "ffmpeg -sameq -i ${1} -ss ${BEG} -t 120 ${before_last_dot}.${COUNTER}.wmv"应为ffmpeg -sameq -i ${1} -ss ${BEG} -t 120 ${before_last_dot}.${COUNTER}.wmv。我把它打印出来检查一下。${1}是视频名称。
但问题是,((COUNTER=COUNTER+2))或((COUNTER+=2))永远不会起作用!COUNTER总是0,BEG也总是0。((MIN=MIN-2))永远也不会工作。
我尝试用let "MIN-=2"替换((MIN=MIN-2)),得到一个错误:let: not found
I+ve仔细检查了一下,但仍然不知道为什么。我头发都白了。
发布于 2011-07-09 09:05:44
您正在使用的((MIN=MIN-2))语法是一个bash-specific特性。
我没有Ubuntu10.10可用来测试,但我猜你的/bin/sh不是bash,而是一个更小、更简单的shell,它只具有POSIX所需的基本特性。(在这种情况下,((MIN=MIN-2))可能会启动子外壳,子外壳只会将变量MIN设置为字符串MIN-2,然后退出。)
在第一行尝试使用#!/bin/bash。
https://stackoverflow.com/questions/6631971
复制相似问题