# 官网安装方式
/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)"
# Homebrew GUI Cakebrew
brew cask install cakebrew
# 需先安装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
ffmpeg -i output.mp4 -an -c:a copy new.mp4
ffmpeg -i new.mp4 -i test.aac -shortest newtest.mp4
# 视频时长大于音频时长的情况下,音频循环播放
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 动图
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 -r 30 -f image2 -s 540x540 -i "%07d.png" -vcodec libx264 -crf 17 -pix_fmt yuv420p output.mp4
fps
代码)"%07d.png"
递增数字,长7个数字)# 参考 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
# 创建 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"
# 截取视频时间帧: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
# 输出是mp3:
-acodec libmp3lame
# 输出是aac:
-acodec libfaac
# 输出是ac3:
-acodec ac3
# 输出是ogg:
-acodec libvorbis
# 安装
brew install imagemagick
# 依赖Ghostscript字体
brew install ghostscript
# 通过[0]就可以提取出GIF的第一帧图像
convert test.gif[0] test.jpg