草庐IT

ffmpeg的安装与简单运用

羊村懒大王啊 2024-07-04 原文

ffmpeg是一款开源且强大的音视频处理工具,很多播放器底层用的都是他。

安装

ffmpeg的安装很简单
先从官网下载安装包,这里以Windows系统下举例子,下载的时候不要下载源码,下载源码需要自己编译。

下载好后解压缩
按照下图中文字描述将对应文件复制到指定目录即可,或者将bin目录添加到系统环境变量也行
测试是否安装完成

简单运用

先介绍一些基本概念

  • 容器/文件:特定格式的多媒体文件,如mp4、mkv、flv等。用来存放视频(流),音频(流),字幕等东西。
  • 媒体流:表示时间轴上的一段连续数据,如一段声音、视频、字幕数据,可压缩可不压缩,压缩的数据需关联特定的编解码器。
  • 数据帧/数据包:通常,媒体流由大量的数据帧组成,帧对应着编解码器的最小处理单元,分属于不同媒体流的数据帧交错存储于容器之中。
  • 编解码器(encoder/decoder)以帧为单位实现压缩数据和原始数据之间的相互转换。
  • 复用(muxer):把不同的流按照某种容器的规则放入 。
  • 解复用(demuxer):把不同的流从某种容器中解析出来 。
  • 码率(bps):也叫比特率,数据率,秒为单位处理的位数,码率和视频质量成正比。
  • 帧率:众所周知。

下面以一个简单例子来说明ffmpeg处理音视频的过程

ffmpeg -i 输入文件名 -acodec copy -vcodec libx264-s 1280x720 输出文件名


命令中-acodec copy代表对音频只做拷贝处理,而-vcodec libx264-s 1280x720表示对视频流解码后对帧大小进行改变的处理。
总结:将输入文件中的音/视频/字幕流从容器中解复用出来,将流解码成数据帧,按照要求对数据帧处理后再将其编码为流,然后将处理过后的音/视频/字幕流再次复用回要求的容器(数据格式)中

静音视频(移除音轨)

ffmpeg -i 输入文件 -an 输出文件

视频提取帧

ffmpeg -i 输入文件 -r 20 -vframes 20  %03d.jpg

将视频帧率设置为20,且提取20帧

查找一个编码器的详细用法

ffmpeg -h encoder=h264 

其中比较重要参数是-crf 作用是控制画质,值在18-28是合理范围,越大画质越差,文件越小

-crf  <float>  E..V Select the quality for constant quality mode (from -1 to FLT_MAX) (default -1) 
参数作用例子说明
-r指定视频帧率-r 24指定帧率24
-s指定视频分辨率-s 1920x1080调整画面分辨率为1920x1080
-vb指定视频输出码率-vb 5000k使输出码率限制在5000k以下
-ab指定音频输出码率-ab 320k使输出码率限制在320k左

有关ffmpeg的安装与简单运用的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  4. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  7. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  8. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  9. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  10. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

随机推荐