我有一个精确的300张png格式的图片(标签为1.png,2.png,.,300.png)的文件夹,我正试图将其转换成视频。我希望视频采用webm格式,但似乎存在一个问题:
使用以下命令:
ffmpeg -start_number 1 -i ./frames/%d.png -frames:v 300 -r 30 out.webm确实会生成一个out.webm文件,而根据ffprobe -select_streams v -count_frames -show_entries stream=nb_read_frames,r_frame_rate out.webm (据推测这是获取该信息的一种效率很低的方法,但这并不是重点),它确实包含300个帧,并且有一个精确的30/1帧,然而,与预期的10秒(从30fps播放的300个帧)相比,视频的持续时间稍微长一些(大约12秒)。
这种差异似乎随着视频长度的增加而增大;900帧以相同的方式转换成视频,以相同的帧速率产生36 (而不是30)第二个视频。
为了进行测试,我还尝试用以下命令生成一个mp4文件,而不是webm文件(与上面的命令完全相同,但out.mp4而不是out.webm),这与预期的完全相同,out.mp4是一个10秒长的视频。
ffmpeg -start_number 1 -i ./frames/%d.png -frames:v 100 -r 30 out.mp4我该怎么解决这个问题?我的ffmpeg命令是关闭的,还是工具中的一个bug?
发布于 2022-08-06 21:48:21
文档( https://www.ffmpeg.org/ffmpeg.html )有一个示例:
用于创建多个图像的视频: ffmpeg -f image2 -framerate 12 -i foo-%03d.jpeg -s WxH foo.avi
和
强制输入文件的帧速率(仅对原始格式有效)为1 fps,输出文件的帧速率为24 fps: ffmpeg -r 1 -i input.m2v -r 24 output.avi。
而且还
作为输入选项,忽略存储在文件中的任何时间戳,而是生成假定帧速率恒定的时间戳。这与用于某些输入格式(如image2或v4l2 )的image2选项不同(在以前的FFmpeg版本中是相同的)。如果有疑问,请使用-framerate而不是输入选项-r。
关于你的案件结果:
ffmpeg -framerate 30 -i ./frames/%d.png output.webmhttps://stackoverflow.com/questions/73224139
复制相似问题