使用 avconv 进行准确可靠的电影编辑

使用 avconv 进行准确可靠的电影编辑

我正在尝试使用 avconv 自动执行电影编辑。它分为两个步骤:

  1. 提取输入影片的某些部分:
  2. 将各部分连接起来形成输出影片:

我尝试了一些用于中间影片和输出影片的容器和编解码器的组合,但总是导致以下情况之一:

  1. 在播放输出影片时,音频的延迟越来越大。似乎连接部分的每次转换都会增加音频的延迟。例如,以下格式和编解码器就会出现这种情况:

    avconv -i input-movie.avi -ss $TIME_1 -vframes $NUMFRAMES_1 -f avi -q 1 -aq 1 -y movie-part1.avi
    avconv -i input-movie.avi -ss $TIME_2 -vframes $NUMFRAMES_2 -f avi -q 1 -aq 1 -y movie-part2.avi
    ...
    avconv -i input-movie.avi -ss $TIME_N -vframes $NUMFRAMES_N -f avi -q 1 -aq 1 -y movie-partN.avi
    
    avconv -i concat:movie-part1.avi|movie-part2.avi|...|movie-partN.avi -f avi -codec mpeg4 -q 1 -acodec libmp3lame -aq 1 -y output-movie.avi
    
  2. 输出影片中的音频和视频同步,但比应有的时间长。在这种情况下,输出的avprobe -show_streams output-movie持续时间和视频nb_frames比预期的要长,尽管运行avconv -i output-video -f image2 %06d.jpg会产生预期数量的 jpg 帧文件(预期帧数为$NUMFRAMES_1 + $NUMFRAMES_2 + ... + $NUMFRAMES_N)。例如,以下格式和编解码器会发生这种情况:

    avconv -i input-movie.avi -ss $TIME_1 -vframes $NUMFRAMES_1 -f mpeg -q 1 -aq 1 -y movie-part1.mpeg
    avconv -i input-movie.avi -ss $TIME_2 -vframes $NUMFRAMES_2 -f mpeg -q 1 -aq 1 -y movie-part2.mpeg
    ...
    avconv -i input-movie.avi -ss $TIME_N -vframes $NUMFRAMES_N -f mpeg -q 1 -aq 1 -y movie-partN.mpeg
    
    avconv -i concat:movie-part1.mpeg|movie-part2.mpeg|...|movie-partN.mpeg -f avi -codec mpeg4 -q 1 -acodec libmp3lame -aq 1 -y output-movie.avi
    

是否有可靠/准确的方法来执行这些操作并获得音频和视频同步且具有预期帧数的电影?

相关内容