Tho*_*aft 1 video loops ffmpeg gif pandastream
假设我有一个8帧动画GIF,长2秒.我想建立一个30秒长的视频文件(编解码器在这一点上并不重要),它由源GIF一遍又一遍地重复组成.
是否可以仅使用ffmpeg
? 使用convert
或其他一些预处理实用程序的答案不计算[原因是我想在PandaStream上使用它,它没有那个实用程序].让我们假设shell脚本也是不可能的,尽管它可以是多个ffmpeg命令.
我尝试过的东西不起作用(虽然我做错了,我对ffmpeg并不十分熟悉):
使用-loop_input
,-loop_output
目前在选项ffmpeg的文档.使用ffmpeg 1.2和2.0,我收到一条Unrecognized option 'loop_[input|output]'
错误消息.我可能会使用这个错误,因为错误是关于无法识别选项,尽管文档说它已被弃用.
-loop
选项.似乎没有用GIF做什么 - >视频.我认为这个标志和上面的标志与生成动画GIF作为输出有关.
的毗连.做类似的事情:
ffmpeg -i"concat:image.gif | image.gif | image1.gif | image2.gif | image3.gif | image4.gif"image-long.gif
结果是16帧gif(所以两个gif串联)这是进步,虽然输出gif的质量要低得多.
我有点在我的智慧结束(我已经尝试了上述概念的许多其他排列),我现在正在'用棍子戳它',希望有人在那里做到了!
可能吗?是.
看看如何连接(加入,合并)媒体文件,我们可以将gif和转码转换为mpeg流(你可以复制第一个两次):
ffmpeg -i image.gif -f mpegts image1.ts
ffmpeg -i image.gif -f mpegts image2.ts
ffmpeg -i image.gif -f mpegts image3.ts
Run Code Online (Sandbox Code Playgroud)
然后将它们连接起来,输出为gif
ffmpeg -i "concat:image1.ts|image2.ts|image3.ts" -pix_fmt rgb24 output.gif
Run Code Online (Sandbox Code Playgroud)
从mp4或类似开始似乎可以提供更好的结果; 用第一步替换
ffmpeg -i image.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts image1.ts
Run Code Online (Sandbox Code Playgroud)
并重复其他副本.
我创建了相同的多个副本,因为如果我concat:
多次尝试同一个文件(concat:image1.ts|image1.ts|image1.ts
)它不起作用.
请享用