常用的几个命令备份

ffmpeg的安装 去官方网站下一个编译好的zip包到本地,然后解压把ffmpeg.exe所在的bin目录的完整路劲写入系统变量,就可以在cmd窗口下所有路径正常使用了。

基本命令, input代表要被转码的文件 libx264是软编码,主要是cpu预算,gpu参与度不高

ffmpeg   -i input  -c:v libx264  -y output.mp4

.mkv格式的转.mp4 因为大多的浏览器还只支持h264编码的mp4文件在线直接播放而不是下载
mkv 选择第二个音轨 如果是第一个音轨 则 -map 0:a:0 -acodec aac

ffmpeg -i AmericanCaptain.mkv -map 0:v -vcodec libx264  -map 0:a:1 -acodec copy  AmericanCaptain.mp4

mkv格式是一种容易,在这个文件里包含 视频、不同音频和字母

-map 参数 可以理解为轨道选择器(做过视频剪辑的对视频轨道、音频轨道、字母等都能理解)

0代表第一个输入文件,v代表视频,一般视频只有一个轨道,所以就不用再用后面的数字了

a代表音频轨道,一般有2个以上 0代表 第一个音频轨道  以此类推

s代表字幕轨道,一般有2个以上的字幕流,比如中文、英语、法语等

添加硬字幕精简为2步

ffmpeg -i input.mkv -map 0:s:0 subs.srt
ffmpeg -i input.mkv  -map: 0:v  -map 0:a:0 -vf subtitles=subs.srt  -c:v libx264 -c:a aac  output.mp4


ffmpeg -i input.mkv -map 0:s:0  zhzm.ass
ffmpeg -i input.mkv  -map: 0:v  -map 0:a:0 -vf ass=zhzm.ass -c:v libx264 -c:a aac  output.mp4

其中,-map为选择器  0 代表第一个输入文件, v视频,a音频,s字幕 libx264为h264的开源编码,针对intel处理器有个优化参数后面再补充。

ffmpeg 硬件转码,

1用ffmpeg.exe -hwaccels显示所有可用的硬件加速器。硬件编解码都必须有对应的硬件支持 n卡a卡,intel的核心集显都对应不同的硬件编码器

ffmpeg.exe -hwaccels

2用ffmpeg.exe -codecs查看编解码器支持

ffmpeg.exe -codecs

一般会有类似如下的输出,decoders:解码器  encoders:编码器 常用的h264和和65编码器如下:

DEV.LS h264 H.264 (decoders: h264 h264_qsv h264_cuvid ) (encoders: libx264 libx264rgb h264_amf h264_nvenc h264_qsv nvenc nvenc_h264 )
DEV.L. hevc H.265 (decoders: hevc hevc_qsv hevc_cuvid ) (encoders: libx265 nvenc_hevc hevc_amf hevc_nvenc hevc_qsv )

 
h264_qsv

Quick Sync Video,简称qsv,是英特尔推出的集成加速接口,使用该接口可以硬解h264,提高解码效率的同时降低CPU占用率,也就是防止cpu狂转,这两年显卡贵的离谱,家用计算机大多都是我这种集显配置。所以需要着重说下这个。

ffmpeg -hwaccel qsv -c:v h264_cuvid -i <input> -c:v h264_qsv -b:v 2048k -y <output>

h265转h264  这个对应n卡的示例

ffmpeg -hwaccel cuivid -c:v nvenc_hevc   -i 0.mp4 -c:v h264_nvenc -y output.mp4


intel核显集成GPU
h265软解码  h264硬件(GPU)编码

ffmpeg -i input.mp4  -c:v h264_qsv -y output.mp4


全硬件解码和编码 intelGPU

ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.mp4  -c:v h264_qsv -y output.mp4

关于码率参数。硬件编码,默认码率比较低,所以转出的视频文件体积比较小

为了视频的观看质量,在分辨率不变的情况下 最好加上 码率控制

ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.mp4  -c:v h264_qsv -b:v 2048k -c:a copy  -y output.mp4

ffmpeg剪切视频,或者叫 ffmpeg截取视频 通常给电视剧去头尾方便观看

ffmpeg -ss 02:08 -to 43:35  -i input.mp4  -c copy  cut.mp4

参数说明 -ss 是从几分几秒开始截取,-to 是到几分几秒结束,都是对于输入视频的时间来计算

这个命令查看其它博主写的都不对啊,最后去官方网站仔细查阅了文档才发现

这个时间参数的精髓 在 不要精确到桢 只到秒就可以了。官方文档是这么写的

There are two accepted syntaxes for expressing time duration.
[-][HH:]MM:SS[.m...]

一个批量剪贴的脚本

for %%a in (*.mp4) do  ffmpeg -ss 01:52  -to 45:03  -i  "%%~a" -c copy -f mp4 "%%~a.mp4"
pause

把这个复制保存到放原视频的目录下,注意修改开始和结束时间,保存为cut.bat 然后双击运行即可。

这些个命令都是 在windows下的终端中能够执行的,如果是linux系统则注意ffmpeg的编译模块。

简单合并文件

ffmpeg -i "concat:1.ts|2.ts|3.ts|4.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy output.mp4