常用的几个命令备份
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
亮亮 写道:
最近在存一些电影啊电视剧啊