ffmpeg 参数

ffmpeg
-hwaccel dxva2 #dxva2硬件加速
-i input.mp4 #输入您要处理的视频文件路径
-f video4linux2 #设定输出格式
-f mpeg2video
-f x11grab
-f avi
-f mp4
-f flv
-f 3gp
-f rtp
-f fmt #强迫采用格式fmt
-f psp #输出psp专用格式
-muxvb 768 #PSP的码率,一般选择384、512和768
-maxrate 500k 最大比特率
-bufsize 64k 比特率緩衝大小
#bitrate
-b 500 #视频数据流量使用固定码率
-b:v 64k #输出文件的视频比特率64kbit/s
-b:v 200k
-b:v 360k #直接影響視頻播放流暢程度
-qscale 6 #动态码率如:-qscale 4和-qscale 6,4的质量比6高
-r 25 #输出视频帧率25fps 每秒频数,安卓达30可以,保证流畅

#视频编码
-c:v hevc_nvenc #硬件NVIDIA加速
-c:v h264_nvenc #硬件NVIDIA加速
-c:v libx264 #libx264编码
-c:v libx265
-vcodec hevc_nvenc
-vcodec h264_nvenc
-vcodec libx264
-vcodec mpeg4
-vcodec h263
-vcodec libxvid
-vcodec msmpeg4v2
-profile:v high #使用H.264的High模式 比較消耗資源
-preset:v fast
-preset medium
-pre slow #使用慢速模式 耗時間 清晰度高
//可选ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
-preset slow #
-crf 22
-cq 0 #-cq 压缩质量0-51,体积越大越差越小 推荐35-38,默认0
#分辨率
-s 640x320
#音频编码
-c:a copy #-acodec aac 或原有copy
-c:a aac
-c:a libfdk_aac
-b:a 256k
-acodec copy
-acodec aac
-acodec mp3
-acodec amr_wb
-acodec libamr_nb
-acodec libfaac
-strict -2
-ac 2 #声道数
-ab 56 #比特率
-ar 22050 #采样率
#画面比例
-aspect 16:9

#转成DVD
-target film-dvd #设置目标文件类型(vcd,svcd,dvd)
-target pal-dvd
-tag:v hvc1
-pix_fmt yuv420p10le
-bitexact #仅使用位精确算法 用于编解码测试
-threads 4
-async 1
-vol 200 #200%的音量,自己改
-title string #设置标题
-author string #设置作者
-copyright string #设置版权
-comment string #设置评论
-hq #激活高质量设置
-y #覆盖输出文件
pingcap.mp4

ffmpeg
-ss 00:00:10 #搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持
-i test1.flv
-f image2
-f p_w_picpath2
-y test1.jpg

ffmpeg
-i test.mp4
-vframes 30
-y
-f gif
a.gif

-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持

-b:v 输出文件的码率,一般500k左右即可,人眼看不到明显的闪烁,这个是与视频大小最直接相关的

视频尺寸:指的就是视频的分辨率,常见的分辨率有40962304,19201080,720*576等。
视频编码:视频编码方式就是指通过特定的压缩技术,
将某个视频格式的文件转换成另一种视频格式文件的方式。
视频编码格式常见到的有:MPEG-2 TS、Divx、Xvid、H.264、WMV-HD和VC-1。
音频编码:音频编码方式指通过特定的压缩技术对音频数据进行处理的方法。
帧率:-r 帧率(即视频更新率)是用于测量显示帧数的量度。
测量单位为“每秒显示帧数”(Frame Per Second,FPS,帧率)或“赫兹”,
单位用FPS用来描述视频每秒播放多少帧,
而单位用赫兹用来描述显示器的画面每秒更新多少次。
一般帧率越高,视频画面越流畅。
比特率:指每秒传送的比特(bit)数,即每秒传输的文件大小。
比特率规定使用“比特每秒”(bit/s 或 bps)为单位。
比特率越高,每秒传送的数据越大。
采样率:采样率的单位是Hz,表示每秒采样的次数。
单位时间内取样率越大,精度就越高,处理过的视频文件就越接近没有处理过的视频文件。
码率:码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。
码率与体积成正比:码率越大,体积越大;码率越小,体积越小。
由于文件体积与取样率是成正比的,
所以几乎所有的编码格式都想用最低的码率达到最少的失真,
“码率”就是失真度,码率越高越清晰,反之则画面粗糙而且马赛克多。

视频部分的位深度:用于指定图像中的每个像素可以使用的颜色信息数量,用“位即bit”为单位。
音频部分的位深度:单个声道的采样数据大小

H.264有四种画质级别,分别是baseline, extended, main, high:

1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;(用的少)
3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced), 也支持CAVLC 和CABAC 的支持;
4、High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、 无损视频编码和更多的YUV 格式;

  H.264 Baseline profile、Extended profile和Main profile都是针对8位样本数据、4:2:0格式(YUV)的视频序列。在相同配置情况下,High profile(HP)可以比Main profile(MP)降低10%的码率。 根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。

录制屏幕:

ffmpeg -t 30 -f x11grab -s 640x480 -r 25 -i :0.0+65+24 -vcodec libx264 -f rtp rtp://127.0.0.1:5060 > x.sdp

其中-f指定x11grab表示屏幕录像(编译时必须加上--enable-x11grab选项),-s设定尺寸,写成缩写或1024x768格式均可,-r设定fps,-i中的:0.0表示你的x11屏幕,+0,0表示偏移,如果你想录制某个小窗口,可以用xwininfo -frame来找到具体坐标。

压缩转码:
ffmpeg -i old.mp4 -s 1920x1080 -c:v libx265 -c:a aac -b:v 200k -r 25 new.mp4

视频录制:
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

截取视频一帧为图片:

ffmpeg -ss 00:01:23.26 -y -i infile outfile -r 1 -vframes 1 -an -sn -vcodec m.jpeg

压制 HEVC 10bit 编码视频文件

ffmpeg -i input.mp4 \
-c:v libx265 -preset medium -crf 18 -pix_fmt yuv420p10le \
-c:a libfdk_aac -b:a 256k \
-tag:v hvc1 \
output_10bit.mp4
和压制 x264 视频非常类似,主要的不同点在于 -c:v 视频编码器需换为 libx265,并且压制 10bit 需要指定色彩空间,添加 -pix_fmt yuv420p10le。在音频编码参数中,如何增加的 -b:a,可以控制音频文件的码率,按需使用。最后,非常重要的一点,必须添加参数 tag:v hvc1,这样输出的 Video Stream 会被标记为 hvc1,可以被 macOS 以及 iOS 11 原生支持播放,否则默认会被标记为 hev1,不被原生支持,第三方播放器播放倒没什么问题。

普屏4:3 320240 640480
宽屏16:9 480272 640360 672378 720480 1024600 1280720 1920*1080

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注