偶然遇到将目的分辨率设置成奇数(例如:854x481)导致ffmpeg转码失败(错误:width not divisible by 2 (854x481)) 于是去查了一下原因:由于转码后的pix_fmt默认是片源相同是yuv420p的,而yuv420p中如果分辨率是奇数的话,计算出 来uv平面就是小数了,无法处理,所以yuv420p不支持分辨率为奇数的情况. 如果需求必须要分辨率是奇数的话,可以修改pix_fmt为yuv444p,这样就不会有问题了.
背景知识ffmpeg是一款领先的流媒体处理框架,支持编码,解码,转码等功能并可以在linux, Mac OS X, Microsoft Windows编译运行,用它做播放器的有:ffplay,射手播放器,暴风影音,QQ影音,用它做转码的有:格式工厂,总之:ffmpeg功能十分强大.视音频编码技术基础>>>生活中的视音频技术我们日常生活中看到的视频有不同后缀如:avi,rmvb,mp4,flv,mkv等等,这些后缀的格式就是视频的封装格式(把音频和视频打包成一个文件的规范).文件的后缀看不
工作需要用到ffmpeg来进行Android的软编码,对这玩意儿一点都不了解,做个学习记录先. FFmpeg:http://www.ffmpeg.org Fmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
v 容器(Container) v 容器就是一种文件(封装)格式,比如flv.mkv.ts.mp4.rmvb.avi等.包含下面5种流以及文件头信息. v 流(Stream) v 是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据. v 帧(Frame) 代表一幅静止的图像,分为I帧,P帧,B帧. v 编解码器(Codec) v 是对视频进行压缩或者解压缩,CODEC =CODE(编码) +DECODE(解码) v 复用/解复用(mux/demux) v 把不