C# 中使用 FFmpeg.NET
ffmpeg的视频操作官网文档:https://ffmpeg.org/ffmpeg-filters.html#video-filters
视频压缩用到的参数主要为以下几个:
- 文件路径:-i 输入文件的路径
- 码率:-b:v 输出文件的码率
- 分辨率:-s 输出文件的分辨率;
- 帧率:-r 输出文件的帧率值
码率
码率,即波特率。值越小,转换后的视频越小
码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。
码率与体积成正比:码率越大,体积越大;码率越小,体积越小。由于文件体积与取样率是成正比的,所以几乎所有的编码格式都想用最低的码率达到最少的失真,“码率”就是失真度,码率越高越清晰,反之则画面粗糙而且马赛克多。
建议码率不要小于500。一般500k左右,人眼看不到明显的闪烁。
案例:ffmpeg.exe -i test.mp4 -b 600k output.mp4
分辨率
指的是视频的分辨率,常见的分辨率有4096*2304,1920*1080,720*576等。
具体的值,可以根据源视频的分辨率做个等比的缩小。
案例:ffmpeg.exe -i test.mp4 -s 1920*1080 output.mp4
帧率
帧率(即视频更新率),就是每秒编码进视频文件的帧数目,是用于测量显示帧数的量度。
测量单位为“每秒显示帧数”(frame per second,fps,帧率)或“赫兹”,单位用fps用来描述视频每秒播放多少帧,而单位用赫兹用来描述显示器的画面每秒更新多少次。
常见的帖率有25、30,高清电视有50、60帧。
一般帧率越高,视频画面越流畅。但是人类的眼睛需要每秒至少15帧才能将图像连贯在一起~
案例:ffmpeg.exe -i test.mp4 -r 25 output.mp4
ffmpeg使用
一般的压缩命令可以用:ffmpeg.exe -i test.mp4 -b:v 500k -r 25 -s 1920x1080 output.mp4。分辨率可以根据源视频的尺寸等比进行设置~
1. 下载ffmpeg.exe
ffmpeg.exe文件下载链接: https://pan.baidu.com/s/1dmeihldsctq1sdsm_ejbmq 提取码: jrkm
2.xabe.ffmpeg
xabe.ffmpeg是一个ffmpeg第三方封装,它提供了ffmpeg的下载、管理以及ffmpeg.exe的详细封装操作,使ffmpeg的操作更加简洁。
通过nuget包引用后(只支持.net 4.6.1及以上),调用await ffmpeg.getlatestversion(ffmpegversion.full); 即可获取相应的版本。
xabe.ffmpeg的使用,可参考博客:c# 中使用 ffmpeg.net
参考文章:
-
ffmpeg视频压缩命令
-
ffmpeg -比特率,帧率和文件大小
-
视频压缩工具ffmpeg的使用