我正在尝试使用 avconv 自动执行电影编辑。它分为两个步骤:
- 提取输入影片的某些部分:
- 将各部分连接起来形成输出影片:
我尝试了一些用于中间影片和输出影片的容器和编解码器的组合,但总是导致以下情况之一:
在播放输出影片时,音频的延迟越来越大。似乎连接部分的每次转换都会增加音频的延迟。例如,以下格式和编解码器就会出现这种情况:
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
输出影片中的音频和视频同步,但比应有的时间长。在这种情况下,输出的
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
是否有可靠/准确的方法来执行这些操作并获得音频和视频同步且具有预期帧数的电影?