Mac 使用 FFmpeg 处理视频

蔚落 2023-06-11 10:30 277阅读 0赞

准备工作

使用 homebrew 下载 FFmpeg

  1. brew install ffmpeg

下载好后更新一下 .zsh 方便 tab 提示

  1. source ~/.zshrc

查看视频信息

使用命令

  1. ffprobe test.mp4

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5oYW9fY19o_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5oYW9fY19o_size_16_color_FFFFFF_t_70 1


处理视频

  • 将一个30M大小的 mp4 文件,无损压缩到 20M 以内(设置码率为2m,指定 视频 libx264格式,音频不变)

    ffmpeg -i test.mp4 -b:v 2m -maxrate 2m -bufsize 2m -c:v libx264 -c:a copy -f mp4 a.mp4

  • 只提取视频,不要声音(-an 不处理音频)

    ffmpeg -i test.mp4 -vcodec copy -an out.mp4

  • 格式转换


处理音频

  1. 有时候不想看视频,只想听声音,那我们就把音轨单独分离出来(将 test.mp4 的音轨以 mp3 的形式 输出成out.mp3)

    ffmpeg -i test.mp4 -acodec mp3 -vn out.mp3


添加字幕

首先需要自己制作 .ass 字幕文件

在 http://www.aegisub.org/ 下载对应平台的软件,然后制作即可,全中文,摸索10分钟即可开始制作字幕

制作好后保存为 .ass 字幕文件

  1. ffmpeg -i test.mp4 -i a.ass -c:a copy -c:v libx264 -vf ass=a.ass -f mp4 out.mp4

将 a.ass 字幕文件 加到 test.mp4中 并且使用 libx264 进行压缩


下载 m3u8 文件

网上看视频,F12 发现是 m3u8 格式的

为很多个 ts 每一个都是短短的几秒,组合起来变成一个大视频,如何使用 FFmpeg 下载并转换成mp4格式呢

  1. ffmpeg -i "https://hong.tianzhen-zuida.com/20191220/16478_479990e8/index.m3u8" -c copy -f mp4 39.mp4

引号内的是 网址,39是名称

可以开启多个控制台 多线程下载


制作 gif

  1. ffmpeg -ss 00:00:00 -t 14 -i shehui.mp4 -s 335x250 -r "15" dongtu.gif

1、ffmpeg 是你刚才安装的程序;

2、 -ss 00:00:03 表示从第 00 分钟 03 秒开始制作 GIF,如果你想从第 9 秒开始,则输入 -ss 00:00:09,或者 -ss 9,支持小数点,所以也可以输入 -ss 00:00:11.3,或者 -ss 34.6 之类的,如果不加该命令,则从 0 秒开始制作;

3、 -t 3 表示把持续 3 秒的视频转换为 GIF,你可以把它改为其他数字,例如 1.5,7 等等,时间越长,GIF 体积越大,如果不加该命令,则把整个视频转为 GIF;

4、 -i 表示 invert 的意思吧,转换;

5、 video.mp4 就是你要转换的视频,名称最好不要有中文,不要留空格,支持多种视频格式;

6、 -s 640x360 是 GIF 的分辨率,视频分辨率可能是 1080p,但你制作的 GIF 可以转为 720p 等,允许自定义,分辨率越高体积越大,如果不加该命令,则保持分辨率不变;

7、 -r “15” 表示帧率,网上下载的视频帧率通常为 24,设为 15 效果挺好了,帧率越高体积越大,如果不加该命令,则保持帧率不变;

8、 dongtu.gif 就是你要输出的文件,你也可以把它命名为 hello.gif 等等。

通过 -t、-s、-r 就可以控制 GIF 的体积、清晰度、流畅度,非常自由。

链接:https://www.jianshu.com/p/b1820e3eefbf


视频剪切

就可以从时间为00:00:15开始,截取5秒钟的视频

  1. ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4

视频拼接

将若干的视频,拼接成一个

新建文本文件 filelist.txt:

file ‘1584428522693118.mp4’
file ‘1584428523280782.mp4’

  1. ffmpeg -f concat -i filelist.txt -c copy output.mp4

20200317151256944.png


只提取音频

  1. ffmpeg -i 晓松奇谈.mp4 -acodec copy -vn output.aac

替换音频

  1. ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4

如果视频中已经有音频的话

  1. ffmpeg -i test.mp4 -i output.mp3 -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output.mp4

剪切音频

需要剪切音频中的一部分,比如 将素材音频 input 从 16秒处 开始截取,截取 7.2秒的音频,输出为 output

  1. ffmpeg -i input.mp3 -ss 00:00:16 -t 00:00:07.2 -acodec copy output.mp3

发表评论

表情:
评论列表 (有 0 条评论,277人围观)

还没有评论,来说两句吧...

相关阅读