When I convert a video with ffmpeg
, and use mediaInfo
to review the metadata, I see the followings for the video codec:
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings : 1 Ref Frames
Whereas for some other videos, mediaInfo
shows this:
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings : CABAC / 4 Ref Frames
What are the differences between these two profiles and settings? Do they have any effects on the compression ratio/file sizes? Any pros/cons? My goal is to reduce the video file sizes at much as possible with negligible quality degradation.
AVC can be described as set of features. The AVC profiles (Baseline or High) are a list of allowed features for the profile. The more features - the better is the compression. For example High supports B-frames and Baseline doesn't.
A higher profile requires more resources for encoding and decoding - compute and memory.
So you are trading file size (or quality) for RAM and processing. I am guessing for most PC and newer smartphone applications - you are better off using a higher AVC profile. For some embedded application - your hardware may not support higher profiles. If latency for live streaming needs to be low - you may want to avoid B-frames.
Nowadays - Main and High are pretty common and give you a quality or file size advantage.