mac install ffmpeg homebrew

Homebrew

# 官网安装方式
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 懒人包安装方式(推荐)
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

Cakebrew

# Homebrew GUI Cakebrew
brew cask install cakebrew

Ffmpeg

# 需先安装Homebrew 
brew install ffmpeg

# 查看版本
ffmpeg -version

ffprobe多媒体流分析工具

ffprobe output.mp4 

# 以 JSON 格式显示每个流的信息 
ffprobe -print_format json -show_streams output.mp4 

# 不显示版本等信息
ffprobe -v quiet -show_format -i output.mp4

# 显示流信息
ffprobe -show_streams output.mp4

# 显示帧信息   
ffprobe -show_frames output.mp4                                                                                                                                                                                                                                                         

视频抽取音频轨道

ffmpeg -i output.mp4 -vn -c:a copy output.aac
  • -i                 :input 输入文件
  • -vn              :v代表video , n表示去除
  • -c:a             :  c代表编码器,a表示音频编码器
  • copy           :拷贝
  • output.aac  : 输出到output.aac文件

视频抽取视频移除轨道

ffmpeg -i output.mp4 -an -c:a copy new.mp4

音视频合流

ffmpeg -i new.mp4 -i test.aac -shortest newtest.mp4
  • -shortest : 视频和音频同时停止
# 视频时长大于音频时长的情况下,音频循环播放
ffmpeg -i new.mp4 -stream_loop -1 -i test.aac -shortest newtest.mp4

多媒体格式互转

ffmpeg -i output.mp4 -c copy output.flv

ffmpeg -i output.flv -c copy output.ts

ffmpeg -i output.ts -c copy output.mov

视频转为高质量 GIF 动图

# 视频转为高质量 GIF 动图
ffmpeg -ss 00:00:03 -t 3 -i test.mp4 -s 640x360 -r 15 test.gif

# 视频倍数播放转为高质量 GIF 动图  (0.25倍播放)
ffmpeg -ss 00:00:03 -t 3 -i test.mp4 -s 640x480 -r 15 -filter:v "setpts=0.25*PTS" test.gif

# GIF 转为 MP4
ffmpeg -f gif -i test.gif test.mp4

# 如上命令部分GIF转化出来的MP4不能被Mac QuickTime Player.app播放,需要添加pixel formal参数
# QuickTime Player对H.264视频只支持YUV色域4:2:0方式的二次插值算法
# 使用yunv420p需要保证长宽为偶数,这里同时使用了scale=420:-2
ffmpeg -i test.gif -vf scale=420:-2,format=yuv420p test.mp4
  • ffmpeg 是你刚才安装的程序;
  • -ss 00:00:03 表示从第 00 分钟 03 秒开始制作 GIF,如果你想从第 9 秒开始,则输入 -ss 00:00:09,或者 -ss 9,支持小数点,所以也可以输入 -ss 00:00:11.3,或者 -ss 34.6 之类的,如果不加该命令,则从 0 秒开始制作;
  • -t 3 表示把持续 3 秒的视频转换为 GIF,你可以把它改为其他数字,例如 1.5,7 等等,时间越长,GIF 体积越大,如果不加该命令,则把整个视频转为 GIF;
  • -i 读取任意数量的输入文件(这些文件可以是正常文件、管道、网络流,抓取设备等);
  • test.mp4 就是你要转换的视频,名称最好不要有中文,不要留空格,支持多种视频格式;
  • -s 640x360 是 GIF 的分辨率,视频分辨率可能是 1080p,但你制作的 GIF 可以转为 720p 等,允许自定义,分辨率越高体积越大,如果不加该命令,则保持分辨率不变;
  • -r “15” 表示帧率,网上下载的视频帧率通常为 24,设为 15 效果挺好了,帧率越高体积越大,如果不加该命令,则保持帧率不变;
  • test.gif:就是你要输出的文件,你也可以把它命名为 xxx.gif 等等。
  • -filter:v "setpts=0.25*PTS" :视频以0.25(取值:[0.25, 4] )倍速播放。
  • -filter:a "atempo=2.0"   : 音频以2(取值:[0.5, 2.0] )倍速播放。

图片包转为视频

ffmpeg -r 30 -f image2 -s 540x540 -i "%07d.png" -vcodec libx264 -crf 17 -pix_fmt yuv420p output.mp4
  • 帧率:30(请参见fps代码)
  • 尺寸:540x540
  • 框架文件名:("%07d.png"递增数字,长7个数字)
  • 质量(CRF):17(请参阅ffmpeg文档,但17–28是合理的,0是无损的)

截切视频

# 参考 I帧 B帧 P帧

# 时间参数放在前面,是对没有编解码的文件设定的
ffmpeg -ss 00:00:50 -t 00:02:42 -i test.mp4 -vcodec copy -acodec copy output.mp4

# 时间参数放在后面是对解码后的数据按时间剪裁,更为准确
ffmpeg -i test.mp4 -ss 00:00:50 -t 00:02:42 -vcodec copy -acodec copy output.mp4
  • -ss 00:00:50     :从00:00:50开始截取
  • -t 00:02:42       :截取时长为00:02:42(可用秒代替如:-t 60)
  •  -vcodec copy  :复制视频
  • -acodec copy   :复制音频

生成缩略图

# 创建 scale=160:90,tile=10x10 的视频缩略图

# scale:视频缩略片段图的尺寸,表示width=160px,height=90px; tile: 指定缩略图排列规则
ffmpeg -i test.mp4 -vsync vfr -vf "select=isnan(prev_selected_t)+gte(t-prev_selected_t\,1),scale=160:90,tile=10x10" -qscale:v 3 "output%03d.jpg"
  • scale=160:90   :视频缩略片段图的尺寸,表示width=160px,height=90px; tile: 指定缩略图排列规则
  • tile=10x10        :10x10 的视频缩略图

 批量生成视频预览图

# 截取视频时间帧:00:00:10 的图片, 图片按视频源分辨率大小输出
for name in ./*.mp4; do ffmpeg -i $name -y -f image2 -ss 00:00:10 -vframes 1  ./${name%.*}.jpg; done


# 截取视频第一帧 图片大小:1280x720
for name in ./*.mp4; do ffmpeg -i $name -y -f image2 -t 0.001 -s 1280x720 ./${name%.*}.jpg; done
  • %.* : 即删除从右边开始到第一个"."及其右边所有字符

 视频转音频

# mp4 to mp3:
ffmpeg -i input.mp4 -acodec libmp3lame -ac 1 -ar 16000 output.mp3
ffmpeg -i input.mp4 -vn -ab 128k -ar 16000 -y output.mp3

# mp4 to wav:
ffmpeg -i input.mp4 -ac 1 -ar 16000 output.wav

# webm to mp3:
ffmpeg -i input.webm -acodec libmp3lame -ac 1 -ar 16000 output.mp3

# webm to wav:
ffmpeg -i input.webm -ac 1 -ar 16000 output.wav

# wav to mp3:
# -f: 强制使用某种输出格式,通常输入文件的格式是自动检测的,输出文件的格式根据后缀猜测,所以大多数情况不需要设置 -f 
ffmpeg -i input.wav -vn -ar 44100 -ac 2 -ab 192k -f mp3 output.mp3
ffmpeg -i audio.wav -acodec libmp3lame audio.mp3

# wav to flac:
ffmpeg -i input.wav output.flac

# flac to wav:
ffmpeg -i input.flac output.flac

# aac to mp3:
ffmpeg -i audio.aac -acodec libmp3lame -ac 2 -ab 160 audio.mp3

# aac to wav:
ffmpeg -i audio.aac audio.wav

# aac to ac3:
ffmpeg -i audio.aac -acodec ac3 audio.ac3

# aac to ogg:
ffmpeg -i input.aac -libvorbis output.ogg

# wav to ogg:
ffmpeg -i input.wav -acodec libvorbis output.ogg

# wav to aac:
ffmpeg -i input.wav -acodec libfaac output.aac

# wav to ac3:
ffmpeg -i input.wav -acodec ac3 output.ac3
  • -i: 表示输入的音频或视频
  • -ac: channel 设置通道3, 默认为1
  • -ar: sample rate 设置音频采样率
  • -acodec: 使用codec编解码
  • -ab: bitrate 设置音频码率
  • -vn: 不做视频记录
  • libmp3lame: 使用libmp3lame编码mp3
  • -y: 覆盖输出文件 
# 输出是mp3:
-acodec libmp3lame

# 输出是aac: 
-acodec libfaac

# 输出是ac3:
-acodec ac3

# 输出是ogg: 
-acodec libvorbis

imagemagick

# 安装
brew install imagemagick

# 依赖Ghostscript字体
brew install ghostscript

提取GIF图片的第N帧图像

# 通过[0]就可以提取出GIF的第一帧图像
convert test.gif[0] test.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值