如何制作具有固定持续时间的视频

时间:2013-06-27 06:11:42

标签: bash ffmpeg avconv

我有视频:

  

video1 - 923秒

     

video2 - 1457秒

     

video3 - 860秒

我需要剪切这些视频并确定其持续时间 - 600秒。但困难在于我需要根据计划削减它们

video

其中:

  
      
  1. 蓝色段总是120秒(固定);

  2.   
  3. 我应该削减红色部分;

  4.   
  5. 我不应该削减绿色部分。

  6.   

之后,我需要在新的600秒视频中加入蓝色和绿色片段,例如

video

由于video1,video2,video3具有不同的持续时间,因此红色和绿色段必须具有不同的持续时间,它们必须与视频的持续时间成比例。

我需要纯粹的ffmpeg(avconv)命令或bash脚本。我不知道如何制作它。

1 个答案:

答案 0 :(得分:1)

执行此操作的简单方法可能是创建编辑决策列表(EDL),然后您可以使用该列表编写最终视频。 我不知道ffmpeg / avconv,但是mplayer/mencoder会处理这些意愿,请参阅docs

创建EDL,使用如下函数:

make_edl() {
 DUR=$1
 PRE=$2
 SLICES=$3
 POST=$4
 ## get the duration of the cut-up pieces
 SNIPPET=$(((DUR-PRE-POST)/SLICES))
 START=$PRE
 STOP=$((DUR-POST))

 curr=$START

 while [ $curr -lt $STOP ]; do
   currstop=$((cur+SNIPPET))
   if [ $currstop -gt $STOP ]; then
     currstop=$STOP
   fi
   echo "${curr} $((curr+SNIPPET)) 0"
   curr=$((curr+2*SNIPPET))
 done
}

# ...

## the following create an EDL for a 923sec movie,
## where we have 120sec of intro, than 31 alternating slices
## and 120sec of outro
make_edl 923 120 31 120 > myedl.txt

## apply the EDL
mencoder -edl myedl.txt input923.mov -o output923.mov

由于bash算法的限制(仅限整数),这不是很常见的