使用ffmpeg将mp4转换为gif时降低fps [英] lower fps when using ffmpeg to convert mp4 to gif

查看:346
本文介绍了使用ffmpeg将mp4转换为gif时降低fps的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用ffmpeg将高质量的视频转换为gif,大多数视频为60fps及以上720p,但是当我使用下面的代码将视频转换为gif时,我得到的gif的fps非常低输出

I am using ffmpeg to convert high quality videos to gif, most of the videos are 60fps and over 720p, but when I use the code below, to convert the video to gif, I get very low fps for the gif output,

#!/usr/bin/env
palette=/tmp/pallete.png
filter="fps=50,scale=480:-1:flags=lanczos"

ffmpeg -y  -i test.mov -vf $filter,palettegen=stats_mode=diff $palette
ffmpeg -y -i test.mov -i $palette -lavfi "$filter [x]; [x][1:v] paletteuse" test.gif

我注意到的另一个问题是-随着宽度的增加,例如720而不是480,我得到的fps甚至更低.

another issue I have noted is - as the width increases e.g 720 instead of 480 I get even lower fps.

这是输出日志示例,输出fps低于分配的50fps

here is output log example, the output fps is lower than the assigned 50fps

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/201631203815.mp4':
Metadata:
 major_brand     : isom
 minor_version   : 512
 compatible_brands: isomiso2avc1mp41
 encoder         : Lavf56.36.100
Duration: 00:00:05.48, start: 0.016000, bitrate: 1579 kb/s

Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1334x1334, 1576 kb/s, 60.18 fps, 60 tbr, 1000k tbn, 50 tbc (default)
Metadata:
  handler_name    : VideoHandler

Input #1, png_pipe, from '/tmp/pallete.png':
   Duration: N/A, bitrate: N/A
Stream #1:0: Video: png, rgba(pc), 16x16 [SAR 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc

Output #0, gif, to '/tmp/201631203815.gif':
Metadata:
  major_brand     : isom
  minor_version   : 512
  compatible_brands: isomiso2avc1mp41
  encoder         : Lavf56.40.101
Stream #0:0: Video: gif, pal8, 480x480, q=2-31, 200 kb/s, 50 fps, 100 tbn, 50 tbc (default)
Metadata:
  encoder         : Lavc56.60.100 gif
Stream mapping:
   Stream #0:0 (h264) -> fps
   Stream #1:0 (png) -> paletteuse:palette
  paletteuse -> Stream #0:0 (gif)
Press [q] to stop, [?] for help

frame=  275 fps= 32 q=-0.0 Lsize=    2480kB time=00:00:05.50 bitrate=3693.5kbits/s    

如何确保输出fps始终是用户设置的? 任何对此的资源都将受到高度赞赏.

How do I ensure that the output fps is always whats set by the user? Any resource on this is highly appreciated.

更新

我还注意到使用较高的fps,例如filter="fps=90,scale=480:-1:flags=lanczos"具有减慢gif的效果,就像慢动作效果一样,输出fps仍然较低,约为15fps

i have also noticed that the use of a higher fps eg filter="fps=90,scale=480:-1:flags=lanczos" has the effect of slowing down the gif,like a slow motion effect, the output fps is still lower around 15fps,

推荐答案

显式设置fps值会产生相同的较低fps输出 结果帧= 346 fps = 24 q = -0.0 Lsize = 6506kB时间= 00:00:06.92 比特率= 7701.8kbits/s

setting the fps value explicitly gave the same lower fps output results frame= 346 fps= 24 q=-0.0 Lsize= 6506kB time=00:00:06.92 bitrate=7701.8kbits/s

这不是输出fps!这是编码 speed .大多数播放器不能正确播放FPS高于50的GIF.参见

This is not the output fps! It's the encoding speed. Most players don't properly play GIFs with a fps higher than 50. See the demo showing this behaviour.

这篇关于使用ffmpeg将mp4转换为gif时降低fps的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆