大家好,又见面了,我是你们的朋友全栈君。
介绍在FFmpeg环境下使用libx264进行H.264(AVC)软编码的操作,H.265(HEVC)的编码操作使用的是libx265,但是参数基本类似。
FFmpeg软编码H.264与H.265 当前网络中常见的视频编码格式要数H.264最为火热,支持H.264的封装格式有很多,如FLV、MP4、HLS(M3U8)、MKV、TS等格式 FFmpeg本身并不支持H.264的编码器,而是由第三方模块对其进行支持,例如x264和OpenH264。使用x264进行H.264编码时,所支持的像素格式主要包含yuv420p、yuvj420p、yuv422p、yuvh422p、yuv444p、yuvj444p、nv12、nv16、nv21.
FFmmpeg硬编解码 当使用FFmpeg进行软编码时,常见的基于CPU进行H.264或H.265编码其相对成本会比较高,CPU编码时的性能也很低,所以出于编码效率及成本考虑,很多时候都会考虑采用硬编码,常见的硬编码包含Nvidia GPU与Intel QSV两种,还有嵌入式平台,如树莓派、瑞芯微等。
FFmpeg输出MP3 FFmpeg使用第三方库libmp3lame即可编码MP3格式。而且MP3的编码还是低延迟的编码,可以支持的采样率比较多,采样格式也多。
FFmpeg输出AAC AAC是一种编码效率更高、编码音质更好的音频编码格式,常见的使用AAC编码后的文件存储格式为m4a。FFmpeg可以支持AAC的三种编码器:1).aac:FFmpeg本身的AAC编码实现;2).libfaac:第三方的AAC编码器;3).libfdk_aac:第三方的AAC编码器
系统资源使用情况 音视频转码与音视频转封装的不同之处在于音视频转码会占用大量的计算资源,而转封装则主要是将音频数据或者视频数据取出,然后转而封装(MUX)成另外一种封装格式,转封装主要占用IO资源,而转码主要占用CPU资源,同时转码也会使用更多的内存资源。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153393.html原文链接:https://javaforall.cn