Linux和Windows下ffmpeg的使用教程-h264文件

Linux和Windows下ffmpeg的使用教程-h264文件

什么是ffmpeg?

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

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的”FF”代表”Fast Forward”。多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。

ffmpeg是强大的媒体处理软件,是开源的, 很多流行的播放器, 格式转换工具, 压缩处理和编码转换工具都是使用ffmpeg进行的, 很多主流的视频网站, 比如youtube 优酷 搜狐…..都在后台对用户上传的视频进行ffmpeg转换编码处理才进行播放的, 或者进行文件切割.

更详细的使用方法请参考: http://www.myzhenai.com.cn/post/2587.html

视频很大(1.5G),请在wifi模式下观看, 如果您认为这文章对您有帮助,请您关注我的头条号吧,谢谢

视频加载中...

Linux下ffmpeg使用方法

查询ffmpeg参数 ffmpeg -h

查询本机编解码器 ffmpeg -codecs

查询ffmpeg编译模块 ./configure --help

查询本机设备(linux) ffmpeg -devices

查询本机设备(windows) ffmpeg.exe -list_devices true -f dshow -i dummy

ffmpeg -i file.avi -i zhangshan.mp3 -vcodec copy -acodec copy filemp3.avi---合并视频和音乐

ffmpeg -y -i test.mp4 -acodec copy -vf "movie=uwsgi.webp [logo]; [in][logo] overlay=10:10:1 [out]" test2.mp4---视频加水印 overlay=10:10:1,后三个数据表示是距离左边的距离,距离上边的距离,是否透明,1表示透明

#ffmpeg -i long.pfv -f mp2 -vn long.mp3---从视频里提取mp3音乐文件

#ffmpeg -s 1280x1024 -r 25 -f x11grab -i :0.0 -f alsa -ac 2 -ar 44100 -i pulse -qscale 0.01 output.flv

#ffmpeg -f alsa -i pulse -f x11grab -r 25 -s 1280x1024 -i :0.0 -acodec pcm_s16le -vcodec libx264 -preset ultrafast -crf 0 output.mkv

#ffmpeg -f alsa -i pulse -f x11grab -r 30 -s 1280x1024 -i :0.0 -acodec aac -b:a 1.5M -vcodec libx264 -b:v 75000k -preset ultrafast -crf 0 output.mkv

#ffmpeg -video_size 1280x1024 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -qp 0 -preset ultrafast capture.mkv---录制高清视频

#ffmpeg -s 1280x1024 -r 25 -f x11grab -i :0.0 -f alsa -ac 1 -ar 44100 -i pulse -qscale 0.01 output.mp4---录制视频和音频

#ffmpeg -i 01.mp4 -vf scale=640:352 001.mp4---视频压缩

#ffmpeg -i ko.mp3 -vn -y ko.mp2

#ffmpeg -i ko.mp3 ko.mp2---音频转换

#ffmpeg -i daddy.mp4 -metadata title="PSY 2015 song Daddy" -metadata author="PSY" -metadata copyright="http://www.myzhenai.com.cn http://www.myzhenai.com http://www.haikou-china.com http://jiayu.mybabya.com" -metadata comment="http://www.myzhenai.com.cn http://www.myzhenai.com http://www.haikou-china.com http://jiayu.mybabya.com" -y daddy2.mp4 ---添加视频音频的元数据信息,即作者,版**权**,注释等信息

ffmpeg -i ko.mp3 -f mp2 -acodec mp2 -vn ko.mp2---转换成mp2

ffmpeg -i output.mp4 -vcodec libx264 -acodec aac -b:a 192k -ar 44100 -ac 2 ffmpeg.mp4

ffmpeg -i shitaoji.mp3 -i file.mp4 -vcodec h264 -acodec libmp3lame fileout.mp4---合并视频和音乐

#-i file.mp4 这是输入视频

#-i shitaoji.mp3 这是输入mp3

#-vcodec h264 这是指定视频编解码格式

#-acodec libmp3lame 这是指定音频编解码格式

#fileout.mp4 合并后的文件

#如果视频大音频小,那么小的文件要放在前面,不然会不成功.

ffmpeg 可以将视频和视频, 音频和音频一起合并, 也可以将视频和音频一起合并 合并过程有点久, 根据文件大小不同. 但有一些是需要切记的,如果视频文件比音频文件大, 音频文件一定需要最新输入. 音频一定得放在最前边, 否则不会成功的. 如果没有mp3的libmp3lame库,可以用aac,这是ffmpeg自带的.

ffmpeg -i glb.flv -acodec libmp3lame -vn glb.mp3---从视频里提取音频文件

#-i lglb.flv 这是输入文件

#-acodec libmp3lame 这是强制mp3格式

#-vn glb.mp3 -vn参数是禁用视频并生成mp3文件.

理论上,只要插件或者协议支持, ffmpeg可以从任何视频里提取声音文件. 根据文件大小所需时间也不等.

ffmpeg -i glb.flv -vcodec libx264 -acodec aac glb.mp4---视频转换械式(转码)

#-i glb.flv 输入文件

#-vcodec libx264 指定视频编解码器H264

#-acodec aac 指定音频编解码器

ffmpeg的编码转换功能是非常强大的, 很多所谓的格式转换工具全都是使用ffmpeg协议和源码进行的,比如QQ影音,腾讯因为没在源码里注释开源协议,还上过ffmpeg的黑名单.

ffmpeg也有php模块,只要在编译的时候编译进去就可以了,很多视频网站上传视频后在后台进行转码的功能都是使用ffmpeg的, 比如youtube 优酷 今日头条........ffmpeg还可以对视频进行切割合并等操作, 同样,ffmpeg也能对一些视频设备进行捕获操作. 很多所谓全码兼容的播放器也都有ffmpeg的影子, 比如mplayer等播放器.

ffmpeg -f alsa -i pulse -f x11grab -r 30 -s 1280x1024 -i :0.0 -acodec aac -b:a 128k -vcodec libx264 -b:v 152k -preset ultrafast -crf 0 output.mp4---桌面录制

#-f alsa 这是指定声卡驱动模式,还有有pcm和oss,但主流的是alsa

#-i pulse 这是输入脉冲

#-f x11grab 这是强制桌面,x11是Linux下的一个窗口组件

#-r 30这是设置帧率

#-s 1280x1024这是指定录制窗口大小

#-i :0.0 这好像是指定视频和音频设备的

#-acodec aac 这是指定音频格式

#-b:a 128k 这是指定音频比特率的

#-vcodec libx264 这是指定视频编解码器为H264

#-b:v 152k 这是指定视频比特率的

#-presset ultrafast -crf 0 这个好像是某个模式,好像数值越小越清晰.

ffmpeg的视频捕获功能是非常强大的, 例如屏幕录制功能, 你甚至都不需要额外安装一些录制软件, 但是ffmpeg在windows下操作要麻烦一些, 因为要重新打包编译ffmpeg为exe文件,虽然ffmpeg官方已经打包编译了三个文件, 但在win10下操作起来还是不如linux下方便, 也许是我对win10不太熟悉.

ffmpeg -i shitaoji.m4a -acodec libmp3lame shitaoji.mp3---音频转换

#-i shitaoji.m4a 输入文件

#-acodec libmp3lame 指定音频编解码器, ffmpeg默认是支持mp3解码,不支持mp3编码的,因为版**权**的原因,所以需要额外安装libmp3lame依赖库

ffmpeg只支持mp3解码, 不支持mp3编码. 如果需要对音频文件进行mp3编码的话,需要额外再编译libmp3lame包, 当然,也可以用aac flac等编码器进行编码,音质也是高清无损的.

ffmpeg -i fileout.mp4 -vf scale=640:352 ffile.mp4---视频压缩

ffmpeg -i kjc.mkv -vcodec libx264 -acodec libmp3lame -vf scale=640:352 kjc.mp4---压缩转码

#-i xxx.mp4 输入文件

#-vf 设置视频过滤器

#scale=640:352需要压缩的视步大小

#-vcodec h264 可以添加这个参数让视频转码为H264,即真正的mp4 也可以做为压缩转码

#-acodec aac 可以添加这个参数让视频的音频编码转换为aac

#-acodec libmp3lame 指定音频的编码为mp3

上面我说过了, 转码和压缩功能ffmpeg是最强大的, 主要的就是-vcodec 和 -acodec这两个参数,后边跟着你想要的编码器就可以了. 上面第二行命令是包含压缩和转码一起了.

ffplay /home/RucLinux/ffmpeg/shitaoji.m4a

ffplay /home/RucLinux/ffmpeg/glb.flv ---播放文件

ffmpeg还自带一个命令行下播放文件的功能ffplay 后边跟着文件路径和文件名就可以了. 你都不需要额外安装播放器.

Windows下的ffmpeg用法

在ffmpeg官网上下载windows的ffmpeg包, ffmpeg已经编译打包成独立的exe程序了, 下载对应自己系统位数的包,然后解压缩后将文件夹重命名为ffmpeg,复制剪切到一个分区下,比如我是放在D盘下,为什么要放在分区下呢?因为这样端命令的时候就不需要端那么多字母了. 用windows下的cmd.exe和powershell.exe都可以对ffmpeg进行操作.

D:\ffmpeg\bin\ffplay.exe E:\我们的更路薄[超清版].flv ---播放文件

#D:\ffmpeg\bin\ffplay.exe 是程序路径,这是ffmpeg已经编译过的ffmpeg播放器程序

#E:\我们的更路薄[超清版].flv 这是要播放的文件

ffplay是命令行下的程序,所以没有任何窗口,你双击它是没有反应的, 但是它会调用它的库或模块来播放文件,窗口也只是一个简单的窗口,但是它的兼容性要比其他的播放器好得多了.

D:\ffmpeg\bin\ffmpeg.exe -i E:\我们的更路薄[超清版].flv -vcodec h264 -s 1280x1024 -acodec aac E:\wmdglb.mp4---视频转换(转码)

#D:\ffmpeg\bin\ffmpeg.exe 程序路径

#-i E:\我们的更路薄[超清版].flv 输入文件

#-vcodec h264 指定编解码器为H264

#-s 1280x1024 指定转换后的视频窗口大小 不添加这行即原文件大小,或者参考上边那个转换代码也可以

#-acodec aac 指定音频编解码器

除了屏幕录制外, 其他操作大致上无论是windows还是linux都差不多, 都是一些参数后边带着一些自定义的东西.

D:\ffmpeg\bin\ffmpeg.exe -list_devices true -f dshow -i dummy---获取本机视频和音频设备

[dshow @ 03737940] DirectShow video devices (some may be both video and audio devices)

[dshow @ 03737940] Could not enumerate video devices (or none found).

[dshow @ 03737940] DirectShow audio devices

[dshow @ 03737940] "楹﹀厠椋?(High Definition Audio 璁惧)"---麦克风设备 "麦克风 (High Definition Audio 设备)"

[dshow @ 03737940] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{39AC5D73-D334-4571-91AC-5D163009C0C7}"---音频设备

dummy: Immediate exit requested

win10下我折腾了很久才弄明白ffmpeg的屏幕录制功能, 但是找来找去却无法在win10下找到音频设备,无论是企业版还是专业版都没有. 可能是win10自带的声卡驱动的问题,其他windows版本我没有测试过, 手头上也没有其他那些版本的安装iso了. 但是win10下录制麦克风还是很方便的.

D:\ffmpeg\bin\ffmpeg.exe -f gdigrab -i desktop -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{39AC5D73-D334-4571-91AC-5D163009C0C7}" -vcodec libx264 -qp 20 -acodec mp3 E:\out.mp4---录制桌面,有声音

D:\ffmpeg\bin\ffmpeg.exe -f dshow -i video="screen-capture-recorder" -s 1280x1024 -r 25 -vcodec h264 -f dshow -i audio="virtual-audio-capturer" -acodec aac -qp 20 -ar 44100 -ac 2 -preset ultrafast out.mp4---录制桌面,有声音

D:\ffmpeg\bin\ffmpeg.exe -f gdigrab -i desktop -vcodec h264 -s 1280x1024 E:\out.mp4---录制桌面,没有声音

以上三行都是Windows下录制桌面的命令, 但录制质量比不上Linux下的, 在win10下也不好找到系统设备了,录制声音需要找到系统音频设备

#D:\ffmpeg\bin\ffmpeg.exe 程序路径

#-f gdigrab 好像是windows下的窗口 跟Linux下的x11grab一样.

#-i desktop 输入桌面

#-vcodec h264 指定编视频编解码器为H264

#-s 1280x1024 指定录制的窗口大小

#-f dshow 输出设备

#-i audio 这是从指定音频设备输入音频.

#@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{39AC5D73-D334-4571-91AC-5D163009C0C7} 这是音频设备 可以用下边的那行命令获取本机设备

#screen-capture-recorder ---视频设备,这个要安装一个软件才能使用这个设备

#virtual-audio-capturer 音频设备,同样需要安装一个软件才能使用这个设备. 安装什么可以搜索这两个关键词.

可以搜索screen-capture-recorder这个关键词,下载安装这个包的文件,好像它就是对视频流进行操作的,安装了这个包的文件后,你的声卡里就会有screen-capture-recorder和virtual-audio-capturer这两个设备,ffmpeg要调用这两个设备进行音视频的输入和输出.

其实在我看来,除了屏幕录制外,其他的操作上无论是windows还是linux都差不多, 只需要我们多看看ffmpeg的帮助文档或参数用法就可以了.

推荐阅读