视频压缩和格式转换函数,也可以转为gif

主要是用 ffmpeg 命令,这个命令很强大,可以压缩视频,转换格式,也可以将视频转为gif。试了下,3M的视频可以压缩或转换成800K,很清晰。

(defun my/video-compress-and-convert (video new)
  (interactive "fvideo path: \nfnew item name (eg. exam.mp4, exam.gif) : ")
  (let ((extension (cadr (split-string (file-name-nondirectory new) "\\."))))
      (if (string= extension "gif")
    (progn
      (shell-command
        (concat "ffmpeg -i " video " -r 5 " new))
      (message "%s convert to %s successfully!" video new))
    (progn
     (shell-command
       (concat "ffmpeg -i " video " -vcodec libx264 -b:v 5000k -minrate 5000k -maxrate 5000k -bufsize 4200k -preset fast -crf 20 -y -acodec libmp3lame -ab 128k " new))
    (message "%s compress and convert to %s successfully!" video new))
    )
   ))

原文:https://blog.geekinney.com/post/elisp-hack-compress-and-convert-video.html

8 个赞

视频转为gif图片时有一个小错误,今天用的时候才发现,已经修正了。

是不是意味着我们可以用emacs把emacs的操作录成gif了。

只是将视频转换为gif,要先额外录屏,然后这个函数可以选择录屏文件转换。

gif-screencast 已经有这个了

gif 体积和画质很难兼顾,可以考虑使用 MP4。

https://macplay.github.io/posts/ffmpeg-ming-ling-xing-can-shu-diao-you/

2 个赞

使用我上面的函数,gif的体积和画质相当漂亮了,十多秒的mov格式视频转为gif大小在500k以内

这个好用吗?

我猜,500k 以内可能是针对某些视频?试试把链接中的文件转换下,看看体积多大。

1 个赞

我试了下,7.3M mov视频直接转为gif大小1.2M。先转为mp4格式,mp4视频1M,mp4再转为gif,gif大小729k。

对比前后两个gif的清晰度看不出区别,很清晰,体积减少了40.6%。确实不错! :+1:

博客很不错诶,换个友链吧。你的已经添加在了这里

好的哦 现在不方便,一会添加。

好了。友情链接 - MacPlay

在按键速度较快的情况下会缺少一些画面

其实可以直接用 byzanz-record ,直接录制成GIF。 ffmpeg转换的会丢帧,而且 byzanz-record 录制的比 ffmpeg 转换的还要小。

具体的源代码可以参考我写的源代码:deepin-screen-recorder/record_process.cpp at master · manateelazycat/deepin-screen-recorder · GitHub

1 个赞

友链加上了。我的意思是在现代浏览器中直接用 MP4,抛弃 gif 格式。

@Youmu 每秒 5 帧是有可能漏掉一些东西。

1 个赞

调大每秒的帧数就好了 就是 -r 后的参数。