ffmpeg
硬件编码后缀解释:
qsv:intel显卡的快速视频同步技术(quick sync video)
nvenc:nvidia显卡的硬件视频编码器(nvidia hardware video encoder)
cuvid:nvdec的旧称,只有解码端。
cuda: 同上.nvdec的旧称,只有解码端。
amf:amd显卡的amf硬件编码器(amd hardware encoder)
查看支持
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | PS C:\Users\asus> ffmpeg -hwaccels
 
 Hardware acceleration methods:
 cuda
 dxva2
 qsv
 d3d11va
 opencl
 vulkan
 
 | 
| 12
 3
 4
 5
 
 | PS C:\Users\asus> ffmpeg -codecs | sls nvenc
 
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv libopenh264 h264_cuvid ) (encoders: libx264 libx264rgb libopenh264 h264_amf h264_mf h264_nvenc h264_qsv )
 DEV.L. hevc                 H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_cuvid ) (encoders: libx265 hevc_amf hevc_mf hevc_nvenc hevc_qsv libkvazaar )
 
 | 
| 12
 3
 4
 5
 6
 7
 
 | PS C:\Users\asus> ffmpeg -decoders | sls 264
 
 VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
 V....D h264_qsv             H264 video (Intel Quick Sync Video acceleration) (codec h264)
 V....D libopenh264          OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
 
 | 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | PS C:\Users\asus> ffmpeg -encoders |sls 264
 
 V....D libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V....D libx264rgb           libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
 V....D libopenh264          OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V....D h264_amf             AMD AMF H.264 Encoder (codec h264)
 V....D h264_mf              H264 via MediaFoundation (codec h264)
 V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... h264_qsv             H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
 
 | 
| 12
 3
 4
 5
 
 | ffmpeg -decoders |sls hevc
 
 
 ffmpeg -encoders |sls hevc
 
 | 
命令行及常用参数解释
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 
 | ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...ffmpeg -i inputfile1 -i inputfile2 output.mp4
 
 
 -hwaccel cuvid:使用cuvid进行硬件加速
 -c:a copy: 保持音频原编码格式
 -c:v copy: 保持视频原编码格式
 -c:v h264_cuvid:使用h264_cuvid进行解码
 -c:v h264_nvenc:使用h264_nvenc进行编码(nvidia硬件加速x265)
 -b:v 2000k:比特率,值越大约清晰。
 -b:v 3500K :视频平均比特率为 3500K
 -s 1920x1080:分辨率
 -bufsize 6000K:缓存区大小 6000K,建议设定为 当前码率帧率5,也许这里的2pass是针对缓冲区的,缓存未来5s
 -maxrate 5000K:最大码率为 5000K,每帧的最高码率不超过这个数值
 -pix_fmt p010le:输出的像素格式是 p010le 也就10bit,只有新的硬件支持,例如:970m不支持,1070可以支持
 -profile:v high:高级画质。
 H.264有四种画质级别,分别是baseline, extended, main, high:
 1. Baseline Profile:基本画质。
 2. Extended profile:进阶画质。(用的少)
 3. Main profile:主流画质。
 4. High profile:高级画质。在main Profile 的基础上增加了无损视频编码和更多的YUV 格式;
 在相同配置情况下,High profile(HP)可以比Main profile(MP)降低10%的码率。
 根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。
 
 -preset slow:预设方案是 slow,slow已经是最好的选项了
 ultrafast(转码速度最快,视频往往也最模糊)
 superfast
 veryfast
 faster
 fast
 medium(default)
 slow
 slower
 veryslow
 placebo
 
 -crf 28: 恒定速率因子模式,用来设置码率控制模式,0表示无损画质(一般18-28,18为分界线)
 -qp 28: 恒定量化器模式,用来设置码率控制模式,(0-51)0表示无损画质
 
 | 
注意
- h264_qsv解码 不能搭配 `-profile:v high``
 
- ``-qp 28- 不能和 -profile:v high`一起出现,不然视频 有音频 没画面
 
- qp这类的压缩,应一个输入对应一个输出,若多个输入,应先将多个输入无损编码成一个较大文件,然后再用- qp或- crf这类参数对较大文件进行压缩,以免出现“有音频 没画面”等异常情况
 - 虽然也不怎么会出现,但后者会更接近一点原来的一点 | 12
 3
 
 | ffmpeg -hwaccel cuvid -i audio.mp4 -c:v h264_cuvid -i video.mp4 -profile:v high -b:v 0 -c:v h264_nvenc [-preset slow] tempfile.mp4
 ffmpeg -hwaccel cuvid -i tempfile.mp4 -qp 28 -c:v h264_nvenc output.mp4
 
 |  
 
| 1
 | ffmpeg -hwaccel cuvid -i audio.mp4 -c:v h264_cuvid -i video.mp4 -profile:v high [-preset slow] [-b:v 0] -qp 28 -c:v h264_nvenc output.mp4
 |  
 
- 普通情况下 Intel 卡和 NVIDIA 输出差不多,但 N卡效果好像好点 | 12
 3
 4
 5
 
 | ffmpeg -hwaccel qsv -i audio.mp4 -c:v h264_qsv -i video.mp4 [-profile:v high] [-preset slow] -c:v qsv output.mp4
 
 
 ffmpeg -hwaccel cuvid -i audio.mp4 -c:v h264_cuvid -i video.mp4 [-profile:v high] [-preset slow] [-crf 10|18|28] -c:v hevc_nvenc output.mp4
 
 |  
 
- N卡配合 bv(非0) 效果很差 | 1
 | ffmpeg -hwaccel cuvid -i audio.mp4 -c:v h264_cuvid -i video.mp4 [-profile:v high] -b:v 10 -c:v hevc_nvenc output.mp4
 |  
 
去水印
框出水印位置
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | ffplay -i 1.mp4 -vf delogo=x=0:y=0:w=150:h=100:show=1 [-ss 5] [-t 5]
 -vf 自定义滤镜
 delogo
 x:起始横坐标
 y:起始纵坐标
 w:宽度
 h:高度
 show:是否显示绿框 0:不显示 1:显示
 --s 从第几秒开始
 -t 持续几秒(-t 5:即只输出5秒)
 
 | 
导出去除水印的视频
| 12
 3
 4
 5
 6
 7
 8
 
 | ffmpeg -i 1.mp4 -vf delogo=x=1120:y=10:w=155:h=100:show=0 -t 5 output1.mp4
 
 
 ffmpeg -i 1.mp4 -ss 5 -t 20 output2.mp4
 
 
 ffmpeg -i 1.mp4 -vf delogo=x=10:y=600:w=160:h=100:show=0 -ss 25 -t 剩下的时间 output3.mp4
 
 | 
拼接视频
| 12
 3
 4
 5
 6
 
 | ffmpeg -f concat -i t.txt -c copy output.mp4
 
 file 'output1.mp4'
 file 'output2.mp4'
 file 'output3.mp4'
 
 |