ffmpeg安装及使用(macbook)

这篇具有很好参考价值的文章主要介绍了ffmpeg安装及使用(macbook)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、安装

1、若没有安装brew指令,打开终端,安装homebrew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

敲击完毕后输入 1
若无法成功,可再次输入命令重试
安装成功后重新启动

2、安装ffmpeg,打开终端输入

brew install ffmpeg

若报错Command failed with exit 128:git的话,输入brew -v后会提示你执行两个配置命令,直接复制执行就ok了!

git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-cask Homebrew/homebrew-cask

git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core Homebrew/homebrew-core

3、若没有报错,输入指令查看是否安装成功

ffmpeg -version

二、ffmpeg参数

常用参数

-c:      指定编码器
-c copy: 直接复制,不经过重新编码(这样比较快)  eg: ffmpeg -i input.mp4 -c copy output.webm 
          将视频从一种容器转到另一个容器
-f:      强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)
-c:v:    指定视频编码器  	eg:  ffmpeg -i [input.file] -c:v libx265 output.mp4  转成 H.265 
          编码
-c:a:    指定音频编码器  
-i:      指定输入文件  		eg: ffmpeg -i input.mp4 查看文件信息
-an:     去除音频流
-vn:     去除视频流   eg: $ ffmpeg -i input.mp4 -vn -c:a copy output.aac 从视频中提取音频;- 
          vn去掉视频,-c:a copy表示不改变音频编码,直接拷贝。
-preset: 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, 
          veryfast, faster, fast, medium, slow, slower, veryslow。
-y:      不经过确认,输出时直接覆盖同名文件。
-vf scale=480*360   改变分辨率  eg:ffmpeg -i input.mp4 -vf scale=320*240 output.mp4
-s        设置视频分辨率 		eg:ffmpeg -i input,mp4 -s 320x240 output.mp4
-vframes 1 指定只截取一帧  
-q:v      2表示输出的图片质量,一般为1到5(1代表质量最高)
-ss       开始时间
-t        持续时间
-to       结束时间
-loop 1   表示图片无限循环
-shortest 音频文件结束,输出视频就结束
-r fps    设置帧率 		eg: ffmpeg -i input.mp4 -r 24 output.mp4 设置帧率为24
-b        设置码率 		eg: ffmpeg -i input.avi -b 1.5M output.mp4
-b:a      音频 -b:v 视频
-fs       (file size首字母缩写)控制输出文件大小 eg: ffmpeg -i input.avi -fs 1024K output.mp4
-ar        指定音频采样率 比如48000
-channels  指定音频通道数 比如双通道为2
-profile:a 指定音频编码格式 比如AAC_LC
-ss        开始时间

视频参数

-b 设定视频流量(码率),默认为200Kbit/s 
-r 设定帧速率,默认为25 
-s 设定画面的宽与高 
-aspect 设定画面的比例 
-vn 不处理视频 
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器 
-g gop_size 设置图像组大小 这里设置GOP大小,也表示两个I帧之间的间隔

音频参数

-ar 设定采样率 
-ac 设定声音的Channel数 
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器 
-an 不处理音频

能力集列表

-formats:列出支持的文件格式。

-codecs:列出支持的编解码器。

-decoders:列出支持的解码器。

-encoders:列出支持的编码器。

-protocols:列出支持的协议。

-bsfs:列出支持的比特流过滤器。

-filters:列出支持的滤镜。

-pix_fmts:列出支持的图像采样格式。

-sample_fmts:列出支持的声音采样格式。

三、ffmpeg用例

1、视频格式转换

ffmpeg -i input.avi output.mp4
ffmpeg -i input.mp4 output.ts

2.提取音频

ffmpeg -i 晓松奇谈.mp4 -acodec aac -vn output.aac
# (-vn 不处理视频 )

3.提取视频

ffmpeg -i input.mp4 -vcodec copy -an output.mp4
# -an 不处理音频

4.视频剪切

# 下面的命令,就可以从时间为00:00:15开始,截取5秒钟的视频。
ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
# -ss表示开始切割的时间,-t表示要切多少。上面就是从开始,切5秒钟出来。

5.码率控制(文件可变小)
码率控制对于在线视频比较重要。因为在线视频需要考虑其能提供的带宽。

那么,什么是码率?很简单: bitrate = file size / duration

比如一个文件20.8M,时长1分钟,那么,码率就是:
biterate = 20.8M bit/60s = 20.810241024*8 bit/60s= 2831Kbps
一般音频的码率只有固定几种,比如是128Kbps, 那么,video的就是
video biterate = 2831Kbps -128Kbps = 2703Kbps。

说完背景了。好了,来说ffmpeg如何控制码率。 ffmpg控制码率有3种选择,-minrate -b:v -maxrate

# -b:v主要是控制平均码率。 比如一个视频源的码率太高了,有10Mbps,文件太大,想把文件弄小一点,但是又不破坏分辨率。 
ffmpeg -i input.mp4 -b:v 2000k output.mp4
# 上面把码率从原码率转成2Mbps码率,这样其实也间接让文件变小了。目测接近一半。
# 不过,ffmpeg官方wiki比较建议,设置b:v时,同时加上 -bufsize
# -bufsize 用于设置码率控制缓冲器的大小,设置的好处是,让整体的码率更趋近于希望的值,减少波动。
#(简单来说,比如1 2的平均值是1.51.49 1.51 也是1.5, 当然是第二种比较好) 
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4
# -minrate -maxrate就简单了,在线视频有时候,希望码率波动,不要超过一个阈值,可以设置maxrate。
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4

6.视频编码格式转换
比如一个视频的编码是MPEG4,想用H264编码,咋办?

ffmpeg -i input.mp4 -vcodec h264 output.mp4
ffmpeg -i input.mp4 -vcodec mpeg4 output.mp4

7.将输入的1920x1080缩小到960x540输出

ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
# ps: 如果540不写,写成-1,即scale=960:-1, 那也是可以的,ffmpeg会通知缩放滤镜在输出时保持原始的宽高比。

8.为视频添加logo / 水印

左上角:ffmpeg -i output.mp4 -i pptv.png -filter_complex overlay output3.mp4
右上角:ffmpeg -i output.mp4 -i pptv.png -filter_complex overlay=W-w output4.mp4
左下角:ffmpeg -i output.mp4 -i pptv.png -filter_complex overlay=0:H-h output5.mp4
右下角:ffmpeg -i output.mp4 -i pptv.png -filter_complex overlay=W-w:H-h output6.mp4

9.为视频去除 logo / 水印

# ffmpeg -i 原始视频文件 -vf delogo=x:y:w:h 处理后视频文件,x,y为距左上角坐标,w,h为水印的宽度和高度
ffmpeg -i origin.mp4 -vf delogo=1000:32:260:86 output.mp4

10.抓取视频的一些帧,存为jpeg图片

ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
 
-r 表示每一秒几帧
-q:v表示存储jpeg的图像质量,一般2是高质量。

如此,ffmpeg会把input.mp4,每隔一秒,存一张图片下来。假设有60s,那会有60张。60张?什么?这么多?不要不要。。。。。不要咋办?? 可以设置开始的时间,和你想要截取的时间呀

ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
 
-ss 表示开始时间
-t表示共要多少时间。

如此,ffmpeg会从input.mp4的第20s时间开始,往下10s,即20~30s这10秒钟之间,每隔1s就抓一帧,总共会抓10帧。

# 从一个视频文件中抽取一帧图像:
ffmpeg -y -i test.mp4 -ss 00:03:22.000 -vframes 1 -an test.jpg

11.将图片序列合成视频 | 将视频分解成图片序列

ffmpeg -f image2 -i image%d.jpg video.mpg

上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等…)合并成video.mpg

ffmpeg -i video.mpg image%d.jpg

上面的命令会生成image1.jpg. image2.jpg. …

支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI

12.视频压缩:H264编码profile & level控制

ffmpeg -i input.mp4 -profile:v baseline -level 3.0 output.mp4
ffmpeg -i input.mp4 -profile:v main -level 4.2 output.mp4
ffmpeg -i input.mp4 -profile:v high -level 5.1 output.mp4

如果ffmpeg编译时加了external的libx264,那就这么写:
ffmpeg -i input.mp4 -c:v libx264 -x264-params “profile=high:level=3.0” output.mp4
从压缩比例来说,baseline< main < high,对于带宽比较局限的在线视频,可能会选择high,但有些时候,做个小视频,希望所有的设备基本都能解码(有些低端设备或早期的设备只能解码baseline),那就牺牲文件大小吧,用baseline。自己取舍吧!

13. 旋转视频

在手机上录的视频,在电脑放,是颠倒的,需要旋转90度。使用格式工厂失败了
使用ffmpeg -i 3.mp4 -vf rotate=PI/2 rotate8.mp4画面确实旋转过来了
但是尺寸不对,变成横屏后,两侧的画面看不到了
改用ffmpeg -i 3.mp4 -vf transpose=1 rotate8.mp4解决了问题

14.视频合成

ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

对于非 MPEG 格式容器,但是是 MPEG 编码器(H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3 等),可以包装进 TS 格式的容器再合并。在新浪视频,有很多视频使用 H.264 编码器,可以采用这个方法

ffmpeg -i input1.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
 
ffmpeg -i input2.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
 
ffmpeg -i input3.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
 
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4

15.其他用例
将4个视频拼接成一个很长的视频
横向拼接2个视频
查看视频总帧数
图片转视频
图片格式转换

https://blog.csdn.net/m0_37605642/article/details/121566820?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121566820-blog-123057086.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121566820-blog-123057086.pc_relevant_default&utm_relevant_index=1

采纳学习

https://blog.csdn.net/JineD/article/details/123057086文章来源地址https://www.toymoban.com/news/detail-779855.html

到了这里,关于ffmpeg安装及使用(macbook)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音视频处理工具FFmpeg与Java结合的简单使用

    一、什么是FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcod

    2024年02月11日
    浏览(66)
  • 使用FFmpeg将本地文件通过UDP推流的音视频

    推流是指将音视频数据通过网络传输到指定的目标端,而FFmpeg是一个功能强大的跨平台多媒体处理工具,可以用于音视频编解码、转码、处理等操作。本文将介绍如何使用FFmpeg将本地文件通过UDP协议进行推流,实现音视频数据的传输。 首先,需要确保已经安装了FFmpeg工具。如

    2024年03月19日
    浏览(69)
  • 音视频开发:ffplay使用ffmpeg滤镜实现倍速播放

    曾经为实现倍速播放使用过ffmpeg,对音频使用atempo滤镜即可实现变速不变调。但是当时效果并不是特别好,和soundtouch相比处理后的音质有明显的区别。最近用新版本的ffmpeg滤镜重新实现了倍速播放,发现效果变好,已经达到可接受的程度,所以在此分享具体实现。 ffmpeg倍速

    2024年02月03日
    浏览(109)
  • Java工程使用ffmpeg进行音视频格式转换(ws.schild)

    JAVE (Java Audio Video Encoder)是一个纯Java的音视频编码器和解码器库,它是基于FFmpeg。JAVE库提供了一些简单易用的API,用于音频和视频格式的转换、编码、解码等操作。它对于一些基本的音视频处理任务来说是一个不错的选择。 这些库都是基于FFmpeg的,并允许在Java中处理音频和

    2024年02月14日
    浏览(98)
  • 【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )

    使用 ffmpeg 命令 从 视频数据 中 提取 音频数据 / 视频数据 保留封装格式 , 封装格式 指的就是 封装 视频数据 的 容器 ; 一个 mp4 格式的视频 , 其 封装容器 就是 mp4 容器 , 其中 封装了 h.264 格式的视频数据 和 aac 格式的 音频数据 ; 执行 命令 , 从 input.mp4 输入文件中 , 提取 音频

    2024年03月23日
    浏览(59)
  • 【配置环境】安装Ffmpeg音视频编解码工具和搭建EasyDarwin开源流媒体服务器

    目录 一,安装Ffmpeg音视频编解码工具 1,简介 2,开发文档 3,安装部署 二,搭建EasyDarwin开源流媒体服务器 1,简介 2,主要功能特点 3,安装部署 4,效果图 三,简单测试 Ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许

    2024年02月07日
    浏览(80)
  • 使用ffmpeg调用电脑自带的摄像头和扬声器录制音视频

    1、打开cmd,执行 chcp 65001 ,修改cmd的编码格式为utf8,避免乱码 2、执行指令 ffmpeg -list_devices true -f dshow -i dummy ,查看当前window的音频和视频名称 3、打开windows系统的\\\"打开声音设置\\\"–“麦克风隐私设置”–\\\"允许应用访问你的麦克风\\\"点击开启 录制视频: 录制音频: 录制音视频:

    2024年02月04日
    浏览(57)
  • 【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )

    音视频 文件 从 采样 - 处理 - 得到原始数据帧队列 - 音视频编码 - 音视频包队列 - 格式封装 的过程如下 : 封装格式 参考 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装

    2024年04月17日
    浏览(85)
  • ffmpeg@音视频工具@音视频合并

    FFmpeg中文网 (github.net.cn) FFmpeg 是一款强大的开源跨平台音视频处理工具集,它包含了一系列命令行工具以及用于音频和视频编码解码、格式转换、抓取、流化等功能的库。FFmpeg 支持多种视频、音频格式和编解码器,能够进行音视频的压缩、封装、转码、分割、合并、过滤、抓

    2024年03月17日
    浏览(79)
  • 音视频 FFmpeg音视频处理流程

    推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包