ffmpeg无法在脚本中工作 - 未找到moov atom

时间:2016-05-31 08:15:27

标签: linux ffmpeg

我创建了一个简单的脚本,将flv文件分成多个部分,将它们全部转换为.mp4,然后合并所有文件以形成最终的mp4文件。我这样做是为了节省时间并并行转换大文件。

但是,我被卡住了,因为通常在ffmpeg的命令行上运行的命令不会通过脚本运行。

我有点被困在这里,希望得到一些帮助。

#!/bin/bash


#sleep 5


filenametmp=$1;

filename=`echo "$filenametmp" | awk '{split($0,a,"."); print a[1]}'`


echo $filename

output="$filename-output"

filenamewithoutpath=`echo "$output" | awk '{split($0,a,"/"); print a[4]}'`

echo $output $filenamewithoutpath

/usr/bin/ffmpeg -i $filenametmp -c copy -map 0 -segment_time $2 -f segment $output%01d.flv

#sleep 10


#echo "/bin/ls -lrt /root/storage/ | /bin/grep $filenamewithoutpath | /usr/bin/wc -l"
filecounttmp=`/bin/ls -lrt /opt/storage/ | /bin/grep $filenamewithoutpath | /usr/bin/wc -l`

filecount=`expr $filecounttmp - 1`

echo $filecount

for i in `seq 0 $filecount`
do


suffix=`expr 0000 + $i`

filenametoconvert="$output$suffix.flv"
convertedfilename="$output$suffix.mp4"
echo $filenametoconvert

/usr/bin/ffmpeg -i $filenametoconvert -c:v libx264 -crf 23 -preset medium -vsync 1 -r 25 -c:a aac -strict -2 -b:a 64k -ar 44100 -ac 1 $convertedfilename > /dev/null 2>&1 &


done





sleep 5

concatstring=""

for j in `seq 0 $filecount`
do


suffix=`expr 0000 + $j`

convertedfilenamemp4="$output$suffix.mp4"

#concatstring=`concat:$concatstring|$convertedfilenamemp4`

echo "file" $convertedfilenamemp4 >> $filename.txt

#ffmpeg -i concat:"$concatstring" -codec copy $filename.mp4

#ffmpeg -f concat -i $filename.txt -c copy $filename.mp4


done

echo $concatstring

ffmpeg -f concat -i $filename.txt -c copy $filename.mp4


rm $output*
rm $filename.txt

我运行这样的任何flv文件:

./ff.sh /opt/storage/tttttssssssssss_573f5b1cd473202daf2bf694.flv 20

我收到此错误消息:

  

找不到moov原子

我使用的是Ubuntu 14.04 LTS版本,标准安装ffmpeg。

0 个答案:

没有答案