【发布时间】:2011-10-01 16:44:20
【问题描述】:
我正在尝试使用 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))
done
echo "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)) 也不行。
我尝试将 ((MIN=MIN-2)) 替换为 let "MIN-=2" 我收到错误:let: not found
我已经仔细检查过,但仍然不知道为什么。我的头发都变白了。
【问题讨论】:
-
您是否尝试过使用调试标志 -x 运行脚本?
#!/bin/sh -x会回显每个命令的结果 -
也许您甚至没有运行 bash?尝试将第一行更改为
#!/bin/bash -
@Martin:你的眼睛很敏锐!
#!/bin/bash工作!问题解决了。谢谢! -
我还是不知道
/bin/sh和/bin/bash的区别。 -
@DocWiki:有很多 shell,bash,Bourne Again Shell,只是其中之一。
/bin/sh是默认值,通常是安装中最基本的,shell 脚本是简单的默认值,因为它实际上总是存在 - 你不能假设它是给定的 shell。
标签: bash command-line ffmpeg ubuntu-10.10