1
liujun3712 2017-02-23 15:48:40 +08:00 via Android 2
你这个 vedio 我看了半天
|
2
timwei 2017-02-23 15:52:09 +08:00 2
我 research 下;再 answer 你的 question 。
|
3
justou 2017-02-23 15:53:47 +08:00
moviepy 用的 ffmpeg, imagemagick 为底层, 可以直接在 py 中调用它们的命令行.
moviepy 有啥问题捏? |
4
kera0a 2017-02-23 16:16:32 +08:00
我调研一番后, 是直接 python 调 ffmpeg 命令行~
|
5
linzhi OP @liujun3712 sorry 写错了。。。
|
6
linzhi OP @justou https://github.com/Zulko/moviepy/issues/437 这个 demo 报异常
|
7
justou 2017-02-23 16:38:07 +08:00
把 write_gif 的 program 参数改成'ffmpeg'或者'ImageMagick'试试, 默认的的 imageio 不好用, 兼容性似乎也有问题. 不过要另外去下 ffmpeg 或者 imagemagick 安装
|
8
ys0290 2017-02-23 16:52:55 +08:00 via iPhone
ps
|
10
justou 2017-02-23 17:29:15 +08:00 1
我这儿试了下, 两个都可以用. 转化成 gif imagemagick 要比 ffmpeg 好很多, ffmpeg 的输出有时很诡异, 画面会花, 使用 imagemagick 的时候要把参数 opt 设置为 optimizeplus 或 OptimizeTransparency, 不然 py 可能卡死. 虽然生成的图会大点, 但是效果很好. 想要精确控制的话还是直接调用相应命令行, 传一摞参数进去, moviepy 只提供了简单功能.
|
11
exoticknight 2017-02-23 18:02:08 +08:00 1
直接用 ffmpeg ?根据我的经验,凡是视频的东西找它就对了……
|
12
likuku 2017-02-23 18:28:19 +08:00
刚刚随手测试了下, ffmpeg 先视频转 dpx 序列帧,再从序列帧转成 gif ,这样 OK 的。
69M h264 1080p 30fps 视频,转 dpx 序列帧 6.6GB ,转 480p 10fps gif , 88M ffmpeg -i IMG_.MOV dpx/t_%06d.dpx ffmpeg -y -i dpx/t_%06d.dpx -vf scale=-1:480 -r 10 t.gif Orz |
13
likuku 2017-02-23 18:33:12 +08:00 1
ffmpeg 直接视频转 480p 10fps gif , gif 74MB
ffmpeg -i IMG.MOV -vf scale=-1:400 -r 10 t.gif ffmpeg 直接视频转成 100p 10fps gif , gif 2.1MB ffmpeg -y -i IMG.MOV -vf scale=-1:100 -r 10 t.gif $ file t.gif t.gif: GIF image data, version 89a, 178 x 100 $ du -sh t.gif 2.1M t.gif |
14
myself659410 2017-02-23 19:19:14 +08:00
@likuku ffmpeg 真是音视频处理的瑞士军刀
|
15
biubuibiu 2017-02-23 20:55:40 +08:00 1
|
16
imlinhanchao 2017-02-23 22:28:38 +08:00 1
|
17
UPYUN 2017-02-24 11:17:54 +08:00
又拍云可以定制此功能,需要的话可联系 https://www.upyun.com/index.html 客服:)
|
19
linzhi OP @likuku 这个视频转 gif ,一般会选择 10 fps 么,选的过大,造成 gif 太大 无法展示,选择太小又容易失真
|
20
likuku 2017-02-24 21:58:32 +08:00
@linzhi 这个得自己测试了,得看画面动态幅度大小吧... 我尝试用 mediainfo 来检查 gif 文件,发现并无 fps 这个属性。
|