首先是ffmpeg,一个简单的转换命令如下
ffmpeg -i 111.mkv -ss 0 -to 20 -c:v libx264 -c:a aac -b:v 2000k -maxrate 2500k -bufsize 2000k -222.mp4
我这常用的一些基本的参数
-i 111.mp4 //这是文件输入
-ss 0 //视频起始时间
-to 50 //视频终止时间
-c:v libvpx //libvpx是视频编码器,-c:v是指定视频编码器
-c:a libvorbis //同样的,-c:a是指定音频编码器
-b:v 2000k //视频码率
-preset ultrafast //调节编码速度及质量
-format webm // 指定视频格式,流的方式输出时需要指定
-threads 4 //多线程处理,不过这一块我也不懂,感觉开了会快一些。。。
对于视频转换,如mkv--->mp4
首先是视频的编码格式,mp4支持的格式有H.265,H.264,所以如果mkv的视频格式不是mp4支持的格式,就需要通过-c:v来指定编码器,mp4这里用到的是libx264,不指定的化会报错。
对于视频需要的格式可以通过这种形式来查找
ffmpeg -encoders | findstr mp4
同样的,对于音频编码格式,也需要对不兼容的格式进行转换,指定音频格式
这里列一下mp4及webm的格式及编码器
mp4:
video,h.264 编码器libx264,h.265 编码器libx265
audio, aac 编码器aac
webm:
video, vp8 编码器libvpx
audio,ogg 编码器libvorbis
对于ffmpeg加字幕,直接写下面这种:
-vf "ass='F\:\\acg\\123.ass'" //F:\acg\123.ass
-vf "subtitles='F\:\\acg\\123.srt'" //F:\acg\123.srt
加 \ 来防止vf过滤器的转意
对于fluent-ffmpeg,如果找不到ffmpeg,可以在js文件里这样
const ffmpeg = require('fluent-ffmpeg');
ffmpeg.setFfmpegPath('E:/ffmpeg-2023-01-04-git-4a80db5fc2-full_build/bin/ffmpeg.exe');
具体使用的可以看看fluent-ffmpeg的github
https://github.com/fluent-ffmpeg/node-fluent-ffmpeg
对于使用fluent-ffmpeg加字幕,你需要这样
.outputOptions([
"-vf", "ass='F\\:\\\\ACG\\\\123.ass'",
])
比上面多了一组 \ ,第一个 \ 是为了防止node的转意,得到一个 \ 的字符,然后这个字符在防止vf的转意
至此,就可以开始快乐的转换视频了。。。(还有跟多的坑要踩)
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删