关于HDTV解码的问题,大家讨论一下。
23帧,1080的HDTV。是不是每秒钟23张分辨率为1920×1080的图片,加上各种同步的音频:AC3,DTS,EAC3等等。
为什么需要这么大的CPU占用率?
如果说图片格式用BMP,那容量很大,可能硬盘来不及读。
1080的HDTV的原理是不是每秒钟播放23张1920×1080的图片,因为数据量大,所以图片压缩过(假设是JPG),然后通过CPU把它解压(假设是BMP)? 好象是这么个道理 不懂 看以前的胶片电影就是一张一张的图片快速变换嘛。 应该道理雷同哦!!不懂不懂 意思是这个意思,但是不能简单理解为多少帧就是每秒显示多少张图片。
HDTV播放流程是这样的:读取媒体--分离器开始工作(这里分为2支,视频分离器将视频信号交给视频解码器,将音频信号交给音频解码器)--视频解码器和音频解码器进行解码交与输出,系统播放器调入其他信息(比如字幕,帧速等等)。真正占用CPU的是分离器和解码器,而不是最后输出显示那多少帧。 分离器还是不怎么占用cpu的,以前我的leader现在在优化h.264的解码器 那究竟为什么这么占用CPU呢?
视频和音频在媒体文件中都已经做好了,是同步的。播放时,视频和音频同时开始,那就应该始终同步(此处暂且忽略现实中如CPU不够强劲,会不同步的现象)。然后只要音频部分负责解码音频,把MP3或者DTS或者AC3甚至EAC3的音频播放出来,视频按顺序把BMP图片播放出来就可以了啊。其实就是调用两个程序,一个快速放幻灯片(即无声视频),一个放音频就可以了啊。为什么会这么占资源?
想来想去只有这个原因:
如果按照BMP的格式,1920×1080的BMP图片,每张的容量是5.93MB,接近6M,按照24帧算,美秒钟的视频流量就是144MB。照此,一部90分钟的1080的影片仅视频部分的容量就是760GB,注意是GB不是MB。
由此可见,存储介质的容量与速度跟不上,是主要原因,所以必须把大容量的高分辨率图片压缩(打个比方,说是BMP压缩成JPG),然后再通过CPU和显卡解压缩(比方:JPG还原为BMP)后播放。
类似于Windows的桌面壁纸,无论你把什么样格式的图片设为Windows的壁纸,最后都被转换为BMP放在Windows用户目录下,然后被调用并显示成壁纸。
请问大家的看法如何?
另外一个问题,即使你把1080的影片截屏,图片效果还是不好,和数码相机照出来的高清照片还是差很多。
估计今后的视频最后会发展成每秒钟的帧数大大多于现在的,并且每一帧的图片质量都和清晰的照片一样好。
希望大家补充、讨论。
回复 #6 degoxin 的帖子
主要是解码, 高清可以有很多种编码方式, 比如: MPEG2, H264等等。H264和MPEG2在文件大小相同情况下提供更高的码率,意味着更清晰,但编、解码是也更占CPU.
你所说的一帧帧, 那已经是解码后的产物了。
如有不对还请指正。
[ 本帖最后由 yiylu 于 2007-6-24 00:32 编辑 ] 那解码前是如何储存的呢?
是不是类似于把好多BMP压缩成JPG,然后在播放时还原成BMP呢?
回复 #8 degoxin 的帖子
不要老往 BMP JPG 上靠,它们也只是存储图像信息的格式罢了,直接称它为静止图像(Still pictures)。详细参考: http://en.wikipedia.org/wiki/Video
视频编码主要是压缩视频, 减少视频的空间和时间冗余,具体如何减少问专家吧,呵呵~ 扣肉的机器还能跑跑 上课了:对于视频压缩,分两种情况
第一种叫spatial compression
可是算是简单的逐帧压缩,可以比喻成将每秒24张BMP压缩成每秒24张JPG
注意 这里只是一个比喻 仅仅体现这种压缩的方式
第二种叫temporal compression
其原理为:By storing only the difference between frames, the size of the movie can be significantly reduced.
存储帧之间的变化.
学过Flash的都知道Key Frame,
temporal compression也是一样,先确定Key Frame(关键帧),然后记录下每一帧对应关键帧的变化
回放时只用处理变化的部分就可以了
这也是h.264等编码方式的原理
可以用图来表示:
这种压缩方法会产生一种很常见的现象:
当处理器/GPU不是很快的时候 处理大场面的电影 回很卡
或者CPU占用率会很高
其实很见单:
大场面的镜头,每一帧都和关键帧之间的差异很大,这样导致需要处理(解码)的信息比正常的信息量要大得多,此时要是来不及处理就会导致丢帧或感到很卡 谢谢楼上XD,很建明清晰的介绍。
页:
[1]