结合了音频的图像序列,并进行视频

问题描述:

我试图采取视频中提取帧和audio.Then我做一些压缩的帧,然后我想的图像帧与音频,以创建相结合视频。从视频结合了音频的图像序列,并进行视频

1.创建帧基于FPS(无损)

ffmpeg -i big_buck_bunny_480p_surround-fix.avi -q:v 1 ./vidtest/out%d.jpg 

这里的问题是,图像的质量是94基于graphicsmagick,我怎样才能提取在原始质量的帧。

2.Getting音频

ffmpeg -i big_buck_bunny_480p_surround-fix.avi -vn -acodec copy big_buck_bunny_480p_surround-fix.ac3 

3.How做我与图像序列合并音频

好像你已经明白了如何提取从视频音频流,所以我们将跳过这一步。

让我们假设你有一个名为video.mp4的视频文件,并命名为audio.mp3的音频文件。您想从视频中截取静止图像,并创建一个以audio.mp3作为音轨的幻灯片。

首先,我们将提取剧照。 fps=1/10意味着帧将每十秒钟提取一次。 -ss 00:00:5意味着我们将从一开始就开始五秒钟。视频的第一位通常是淡入淡出,其中大部分是黑色的,因此可能需要跳过该部分。

ffmpeg -ss 00:00:5 -i video.mp4 -vf fps=1/10 image%03d.png 

接下来我们将计算导致的图像数量。当我们指定幻灯片的帧速率时,这将很方便。

imgcount=$(find . -maxdepth 1 -name "image*" | wc -l) 

echo $imgcount 

音轨的持续时间也很好理解。使用MP3和类似的格式,尤其是在使用可变比特率进行编码时,估计持续时间可能会很困难。为了解决这个问题,音频文件可以转换成WAV文件,f.ex,然后估计持续时间。

adur=$(ffprobe -v error -select_streams a:0 -show_entries stream=duration \ 
    -of default=noprint_wrappers=1:nokey=1 audio.mp3) 

echo $adur 

现在我们将图像重组为幻灯片。 $imgcount/$adur指定了静止画面的显示速率,因此持续时间与音频文件的显示速度相当吻合。 -r 25指定视频的实际帧速率。并非所有格式和视频播放器都能接受不寻常的帧率。

ffmpeg -framerate $imgcount/$adur -i image%03d.png -c:v libx264 -r 25 \ 
    -pix_fmt yuv422p slideshow.mp4 

这将复合音频文件和幻灯片文件并修剪到两者中最短的时间。如果容器格式支持音频文件的编解码器(如果不是音频文件必须重新转换),或者选择了其他容器格式,则此功能可用。我发现Matroska(.mkv)非常有用。在.avi.ac3.mp4.mp3的情况下应该没有问题。

ffmpeg -i slideshow.mp4 -i audio.mp3 -codec copy -shortest slideshow-sound.mp4 
+0

我已经采出的基于视频的从第一command.If我选择提取框架每隔10秒我要去丢失数据(帧) – user2650277

+0

@ user2650277原来的帧率帧:当然。只需调整'fps'的味道,说25? – AkselA

+0

是否'ffmpeg -i big_buck_bunny_480p_surround-fix.avi -q:v 1 ./vidtest/out%d。jpg'不会做同样的事情 – user2650277