怎样qsv格式转换mp44格式的视频? 

只需一步,快速开始
后使用快捷导航没有帐号?
查看: 1790|回复: 15
交易0 分威望8828 点收听数听众数QQ居住地北京市买家信用卖家信用在线时间444 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限80积分13368精华0UID344053
本教程意在讲述一些视频音频的基础知识和术语。它可以比较详细的回答以下常见的问题:.MP4/MKV这些格式有什么区别?哪个画质好?. 视频的码率是怎么算的?为什么同样是1080p的视频,有些体积大有些体积小?. 视频储存的图像信息是什么格式的?跟显示器一样的红绿蓝么?. 8bit/10bit到底指的什么?为什么说8bit显示器还有必要看10bit视频?. yuv420/444这些标示到底什么意思?哪个好?. 线条,平面,纹理这些到底是什么意思?视频为啥还有高频低频?. 码率越高的视频画质越好么?……
本教程将分以下模块详细叙述:1、封装格式(MP4/MKV…)&&vs 媒体格式(H.264/FLAC/AAC…)2、视频的基础参数:分辨率,帧率和码率3、图像的表示方法:RGB模型 vs YUV模型4、色深5、色度半采样6、空间上的低频与高频:平面,纹理和线条7、时间上的低频与高频:动态8、清晰度与画质简述
1、封装格式(MP4/MKV…)&&vs 媒体格式(H.264/FLAC/AAC…)MP4+MKV是你下载的视频文件最常见的种类。这些文件其实类似一个包裹,它的后缀则是包裹的包装方式。这些包裹里面,包含了视频(只有图像),音频(只有声音),字幕等。当播放器在播放的时候,首先对这个包裹进行拆包(专业术语叫做分离/splitting),把其中的视频、音频等拿出来,再进行播放。 既然它们只是一个包裹,就意味着这个后缀不能保证里面的东西是啥,也不能保证到底有多少东西。包裹里面的每一件物品,我们称之为轨道(track),一般有这么些: 视频(Video): 一般来说肯定都有,但是也有例外,比如mka格式的外挂音轨,其实就是没视频的mkv。注意我们说到视频的时候,是不包括声音的。音频(audio):一般来说也肯定有,但是有些情况是静音的,就没必要带了。章节(Chapter): 蓝光原盘中自带的分段信息。如果文件带上了,那么你可以在播放器中看到带章节的效果:.potplayer右键画面,选项-播放-在进度条上显示书签/章节标记.mpc-hc 右键画面,选项-调节-在进度条显示章节标记字幕(Subtitles):有些时候文件自带字幕,并且字幕并非是直接整合于视频的硬字幕,那么就是一起被打包在封装容器中。其他可能还有附件等,不一一列举。每个类型也不一定只有一条轨道,比如经常见到带多音轨的MKV。 每个轨道,都有自己的格式。比如大家常说的,视频是H.264,音频是AAC,这些就是每个轨道的格式。视频的格式,常见的有H.264(可以细分为8bit/10bit),H.265(当前也有8bit/10bit之分),RealVideo(常见于早期rm/rmvb),VC-1(微软主导的,常见于wmv)。基本上,H.264=AVC=AVC1, H.265=HEVC。音频的格式,常见的有 FLAC/ALAC/TrueHD/DTS-HD MA这四种无损,和AAC/MP3/AC3/DTS(Core)这四种有损。
MKV vs MP4,主要的区别在于: · MKV支持封装FLAC作为音频,MP4则不支持。但是MP4也可以封装无损音轨(比如说ALAC,虽然普遍认为ALAC的效率不如FLAC优秀)· MKV支持封装ASS/SSA格式的字幕,MP4则不支持。一般字幕组制作的字幕是ASS格式,所以内封字幕多见于MKV格式· MP4作为工业标准,在视频编辑软件和播放设备上的兼容性一般好于MKV。这也是vcb-s那些为移动设备优化的视频基本上选择MP4封装的原因。除此之外,这两个格式很大程度上可以互相代替。比如它们都支持封装AVC和HEVC,包括8bit/10bit的精度。所以MP4画质不如MKV好,这种论断是非常无知的——它们完全可以封装一样的视频。为什么会有这样的分歧,就是历史原因了。MKV是民间研发,为了代替古老的AVI,从而更好地支持H264,它开发和修改的灵活度使得它可以兼容flac/ass这类非工业标准的格式;而MP4则是出生豪门,作为工业标准,替代更古老的MPG,作为新一代视频/音频封装服务的。
2、视频的基础参数:分辨率,帧率和码率。视频是由连续的图像构成的。每一张图像,我们称为一帧(frame)。图像则是由像素(pixel)构成的。一张图像有多少像素,称为这个图像的分辨率。比如说的图像,说明它是由横纵个像素点构成。视频的分辨率就是每一帧图像的分辨率。 一个视频,每一秒由多少图像构成,称为这个视频的帧率(frame-rate)。常见的帧率有=23.976, =29.970, =59.940, 25.000, 50.000等等。这个数字是一秒钟内闪过的图像的数量。比如23.976,就是1001秒内,有24000张图像。视频的帧率是可以是恒定的(cfr, Const Frame-Rate),也可以是变化的(vfr, Variable Frame-Rate) 码率的定义是视频文件体积除以时间。单位一般是Kbps(Kbit/s)或者Mbps(Mbit/s)。注意1B(Byte)=8b(bit)。所以一个24分钟,900MB的视频:体积:900MB = 900MByte = 7200Mbit时间:24min = 1440s码率:&&= 5000 Kbps = 5Mbps 当视频文件的时间基本相同的时候(比如现在一集番大概是24分钟),码率和体积基本上是等价的,都是用来描述视频大小的参数。长度分辨率都相同的文件,体积不同,实际上就是码率不同。码率也可以解读为单位时间内,用来记录视频的数据总量。码率越高的视频,意味着用来记录视频的数据量越多,潜在的解读就是视频可以拥有更好的质量。(注意,仅仅是潜在,后文我们会分析为什么高码率不一定等于高画质)
3、色深色深(bit-depth),就是我们通常说的8bit和10bit,是指每个通道的精度。8bit就是每个通道用一个8bit整数(0~255)代表,10bit就是用10bit整数(0~1023)来显示。16bit则是0~65535(注意,上文的表述是不严谨的,视频在编码的时候,并非一定能用到0~255的所有范围,而是可能有所保留,只用到一部分,比如16~235。这我们就不详细展开了) 你的显示器是8bit的,代表它能显示RGB每个通道0~255所有强度。但是视频的色深是YUV的色深,播放的时候,YUV需要通过计算转换到RGB。因此,10bit的高精度是间接的,它使得运算过程中精度增加,以让最后的颜色更细腻。 如何理解8bit显示器,播放10bit是有必要的呢:一个圆的半径是12.33m, 求它的面积,保留两位小数。半径的精度给定两位小数,结果也要求两位小数,那么圆周率精度需要给多高呢?也只要两位小数么?
取pi=3.14, 面积算出来是477.37平方米
取pi=3.1416,面积算出来是477.61平方米
取pi精度足够高,面积算出来是477.61平方米。所以取pi=3.1416是足够的,但是3.14就不够了。 换言之,即便最终输出的精度要求较低,也不意味着参与运算的数字,以及运算过程,可以保持较低的精度。在最终输出是8bit RGB的前提下,10bit YUV比起8bit YUV依旧具有精度优势的原因就在这里。事实上,8bit YUV转换后,覆盖的精度大概相当于8bit RGB的26%,而10bit转换后的精度大约可以覆盖97%——你想让你家8bit显示器发挥97%的细腻度么?看10bit吧。 8bit精度不足,主要表现在亮度较低的区域,容易形成色带:
注意这图右边那一圈圈跟波浪一样的效果。这就是颜色精度不足的表现。10bit的优势不只在于显示精度的提高,在提高视频压缩率,减少失真方面,相对8bit也有优势。这方面就不展开了。
4、图像的表示方法:RGB模型 vs YUV模型光的三原色是红(Red)、绿(Green)、蓝(Blue)。现代的显示器技术就是通过组合不同强度的三原色,来达成任何一种可见光的颜色。图像储存中,通过记录每个像素红绿蓝强度,来记录图像的方法,称为RGB模型 (RGB Model)常见的图片格式中,PNG和BMP这两种就是基于RGB模型的。比如说原图:
分别只显示R G B通道的强度,效果如下: 三个通道下,信息量和细节程度不一定是均匀分布的。比如说可以注意南小鸟脸上的红晕,在3个平面上的区分程度就不同——红色平面下几乎无从区分,造成区别的主要是绿色和蓝色的平面。外围白色的脸颊,三色都近乎饱和;但是红晕部分,只有红色饱和,绿色和蓝色不饱和。这是造成红色凸显的原因。 除了RGB模型,还有一种广泛采用的模型,称为YUV模型,又被称为亮度-色度模型(Luma-Chroma)。它是通过数学转换,将RGB三个通道,转换为一个代表亮度的通道(Y,又称为Luma),和两个代表色度的通道(UV,并成为Chroma)。 举个形象点的例子:一家养殖场饲养猪和牛,一种记数方式是:(猪的数量,牛的数量)但是也可以这么记录:(总数量=猪的数量+牛的数量,相差=猪的数量-牛的数量)。两种方法之间有数学公式可以互转。 YUV模型干的是类似的事儿。通过对RGB数据的合理转换,得到另一种表示方式。YUV模型下,还有不同的实现方式。举个用的比较多的YCbCr模型:它把RGB转换成一个亮度(Y),和 蓝色色度(Cb) 以及 红色色度(Cr)。转换背后复杂的公式大家不需要了解,只需要看看效果: 只有亮度通道:
只有蓝色色度:
只有红色色度:
在图像视频的加工与储存中,YUV格式一般更受欢迎,理由如下: 1、人眼对亮度的敏感度远高于色度,因此人眼看到的有效信息主要来自于亮度。YUV模型可以将绝大多数的有效信息分配到Y通道。UV通道相对记录的信息少的多。相对于RGB模型较为平均的分配,YUV模型将多数有效信息集中在Y通道,不但减少了冗余信息量,还为压缩提供了便利2、保持了对黑白显示设备的向下兼容3、图像编辑中,调节亮度和颜色饱和度,在YUV模型下更方便。几乎所有的视频格式,以及广泛使用的JPEG图像格式,都是基于YCbCr模型的。播放的时候,播放器需要将YCbCr的信息,通过计算,转换为RGB。这个步骤称为渲染(Rendering)每个通道的记录,通常是用整数来表示。比如RGB24,就是RGB各8个bit,用0~255 (8bit的二进制数范围)来表示某个颜色的强弱。YUV模型也不例外,也是用整数来表示每个通道的高低。
5、色度半采样在YUV模型的应用中,Y和UV的重要性是不等同的。图像视频的实际储存和传输中,通常将Y以全分辨率记录,UV以减半甚至1/4的分辨率记录。这个手段被称为色度半采样(Chroma Sub-Sampling)。色度半采样可以有效减少传输带宽,和加大UV平面的压缩率,但是不可避免的会损失UV平面的有效信息。 我们平常的视频,最常见的是420采样。配合YUV格式,常常被写作yuv420。这种采样是Y保留全部,UV只以(1/2) x (1/2)的分辨率记录。比如说的视频,其实只有亮度平面是。两个色度平面都只有960×540的分辨率。当然了,你也可以选择不做缩减。这种称为444采样,或者yuv444。YUV三个平面全是满分辨率。 在做YUV-&RGB的时候,首先需要将缩水的UV分辨率拉升到Y的分辨率(madVR中允许自定义算法,在Chroma Upscaling当中),然后再转换到RGB。做RGB-&YUV的转换,也是先转换到444(YUV的分辨率相同),再将UV分辨率降低。 一般能拿到的片源,包括所有蓝光原盘,都是420采样的。所以成品一般也保留420采样。所以yuv420就表示这个视频是420采样的yuv格式。将420做成444格式,需要自己手动将UV分辨率拉升2×2倍。在今天madVR等渲染器可以很好地拉升UV平面的情况下,这种做法无异于毫无必要的拉升DVD做成伪高清。当然了,有时候也需要在444/RGB平面下做处理和修复,常见的比如视频本身RGB平面不重叠(比如摩卡少女樱),这种修复过程首先要将UV分辨率拉升,然后转RGB,做完修复再转回YUV。修复后的结果相当于全新构图,这种情况下保留444格式就是有理由,有必要的。 H264格式编码444格式,需要High 4:4:4 Predictive Profile(简称Hi444pp)。所以看到Hi444pp/yuv444 之类的标示,你就需要去找压制者的陈述,为什么他要做这么个拉升。如果找不到有效的理由,你应该默认作者是在瞎做。
6、空间上的低频与高频:平面,纹理和线条在视频处理中,空间(spatial)的概念指的是一帧图片以内(你可以认为就是一张图所呈现的二维空间/平面)。跟时间(temporal)相对;时间的概念就强调帧与帧之间的变换。 于是我们重新来看这张亮度的图:
亮度变化较快,变动幅度大的区域,我们称之为高频区域。否则,亮度变化缓慢且不明显的区域,我们称为低频区域。 图中的蓝圈就是一块典型的低频区域,或者就叫做平面(平坦的部分)。亮度几乎没有变化绿圈中,亮度呈现跳跃式的突变,这种高频区域我们称之为线条。红圈中,亮度频繁变化,幅度有高有低,这种高频区域我们称为纹理。 有时候,线条和纹理(高频区域)统称为线条,平面(低频区域)又叫做非线条。 这是亮度平面。色度平面,高频低频,线条等概念也同样适用,就是描述色度变化的快慢轻重。一般我们所谓的“细节”,就是指图像中的高频信息。一般来说,一张图的高频信息越多,意味着这张图信息量越大,所需要记录的数据量就越多,编码所需要的运算量也越大。如果一个视频包含的空间性高频信息很多(通俗点说就是每一帧内细节很多),意味着这个视频的空间复杂度很高。记录一张图片,编码器需要决定给怎样的部分多少码率。码率在一张图内不同部分的分配,叫做码率的空间分配。分配较好的时候,往往整幅图目视观感比较统一;分配不好常见的后果,就是线条纹理尚可,背景平面区域出现大量色带色块(码率被过分的分配给线条);或者背景颜色过渡自然,纹理模糊,线条烂掉(码率被过分的分配给非线条)。
7、时间上的低频与高频:动态在视频处理中,时间(temporal)的概念强调帧与帧之间的变换。跟空间(spatial)相对。动态的概念无需多解释;就是帧与帧之间图像变化的强弱,变化频率的高低。一段视频如果动态很高,变化剧烈,我们称为时间复杂度较高,时域上的高频信息多。否则如果视频本身舒缓多静态,我们称为时间复杂度低,时域上的低频信息多。 一般来说,一段视频的时域高频信息多,动态的信息量就大,所需要记录的数据量就越多,编码所需要的运算量也越大。但是另一方面,人眼对高速变化的场景,敏感度不如静态的图片来的高(你没有时间去仔细观察细节),所以动态场景的优先度可以低于静态场景。如何权衡以上两点去分配码率,被称为码率的时间分配。分配较好的时候,看视频无论动态还是静态效果都较好;分配不好的时候往往是静态部分看着还行,动态部分糊烂掉;或者动态部分效果过分的好,浪费了大量码率,造成静态部分欠码,瑕疵明显。 很多人喜欢看静止的截图对比,来判断视频的画质。从观看的角度,这种做法其实并不完全科学——如果你觉得比较烂的一帧其实是取自高动态场景,那么这一帧稍微烂点无可厚非,反正观看的时候你注意不到,将码率省下来给静态部分会更好。
8、清晰度与画质简述我们经常讨论,一个视频清晰度如何,画质好不好。但是如何给这两个术语做定义呢? 经常看到的说法:“这个视频清晰度是1080p的”。其实看过上文你就应该知道,1080p只是视频的分辨率,它不能直接代表清晰度——比如说,我可以把一个480p的dvd视频拉升到1080p,那又怎样呢?它的清晰度难道就提高了么? 一个比较接近清晰度的概念,是上文所讲述的,空间高频信息量,就是一帧内的细节。一张图,一个视频的细节多,它的清晰度就高。分辨率决定了高频信息量的上限;就是它最清晰能到什么地步。1080p之所以比480p好,是因为它可以允许图像记录的高频信息多。这个说法看样子很靠谱,但是,有反例:
右图的高频信息远比左图多——它的线条很锐利,有大量致密的噪点(注意噪点完全符合高频信息的定义;它使得图像变化的非常快)
但是你真的觉得右图清晰度高么?
事实上,右图完全是通过左图加工而来。通过过度锐化+强噪点,人为的增加无效的高频信息。
所以清晰度的定义我更倾向于这样一个说法:图像或视频中,原生、有效的高频信息。
原生,强调这种清晰度是非人工添加的;有效;强调细节本身有意义,而不是毫无意义的噪点特效。 值得一提的是,人为增加的高频信息不见得完全没有帮助。有的时候适度锐化的确能够起到不错的目视效果:
这是一幅适度锐化后的效果。如果有人觉得右图更好,至少某些部分更好,相信我,你不是一个人。所以适度锐化依旧是视频和图像处理中,可以接受的一种主观调整的手段,一定的场合下,它确实有助于提高目视效果。 以上是清晰度的概述。注意,清晰度只是空间方面(就是一帧以内)。如果再考虑到动态效果的优秀与否(视频是不是那种一动起来就糊成一团的,或者动起来感觉卡顿明显的,常见于早起RMVB),空间和时间上优秀的观看效果共同定义了画质。所以我们说madVR/svp那些倍帧效果有助于提高画质,实际上它们增强了时间上的观看效果。 好的画质,是制作者和观众共同追求的。怎么样的视频会有好的画质呢?是不是码率越高的视频画质越好呢?真不见得。视频的画质,是由以下几点共同决定的: 1、源的画质。
俗话说的好,上梁不正下梁歪。如果源的画质本身很差,那么再如何折腾都别指望画质好到哪去。所以压制者往往会选择更好的源进行压制——举个栗子,BDRip一般都比TVRip来的好,哪怕是720p。蓝光也分销售地区,一般日本销售的日版,画质上比美版、台版、港版啥的都来得好,所以同样是BDRip,选取更好的源,就能做到画质上优先一步。 2、播放条件。
观众是否用了足矣支持高画质播放的硬件和软件。这就是为啥我们在发布Rip的同时大力普及好的播放器;有时候一个好的播放器胜过多少在制作方面的精力投入。 3、码率投入vs编码复杂度。
视频的时间和空间复杂度,并称为编码复杂度。编码复杂度高的视频,往往细节多,动态高(比如《魔法少女小圆剧场版 叛逆的物语》),这样的视频天生需要较高的码率去维持一个优秀的观看效果。
相反,有些视频编码复杂度低(比如《请问今天要来点兔子么》,动态少,线条细节柔和),这种视频就是比较节省码率的。 4、码率分配的效率和合理度。
同样多的码率,能起到怎样好的效果,被称为效率。比如H264就比之前的RealVideo效率高;10bit比8bit效率高;编码器先进,参数设置的比较合理,编码器各种高端参数全开(通常以编码时间作为代价),码率效率就高。
合理度就是码率在时空分配方面合理与否,合理的分配,给观众的观看效果就比较统一协调。 码率分配的效率和合理度,是对制作者的要求,要求制作者对片源分析,参数设置有比较到位的理解。 这里再多提一句,至少在这个时间点,也就是此文发布的2014年年底,HEVC相对于AVC可以提高50%的效率,依旧是一个纸面上的理论值。实际操作中,因为HEVC编码器的成熟度远不及经过了十几年发展的AVC编码器,导致现在HEVC的潜力远没有能发挥出来,特别是高画质下甚至不如。
对于目前主流的,定位收藏画质的BDRip,同样码率下x265的画质相对于x264没有优势;所以在近期,大家不用优先的去下载HEVC版作为收藏目的,更不必迷信什么“码率降低一半”。再强调一次,这个时间点;如果一年后以上陈述被不断进步的HEVC编码器推翻,我毫不惊讶。就比如目前就开始使用改编码方式了。
上面的是我们FIBBR专门建立的微信群,有疑问的话,加群来讨论吧。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
FIBBR 发烧级HDMI光纤线。【1.5至20米】光传输,更低损耗,更轻更细,抗干扰更稳定。发烧友,家庭影院,家装布线,游戏用户首选。
交易0 分威望14173 点收听数听众数QQ买家信用卖家信用在线时间1504 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限40积分29313精华0UID265866
交易16 分威望27911 点收听数听众数QQ买家信用卖家信用在线时间3993 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限40积分67911精华0UID180152
非常好的科普帖,留名学习
交易0 分威望1027 点收听数听众数QQ买家信用卖家信用在线时间95 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分2077精华0UID345072
6.1ES, 积分 2077, 距离下一级还需 2923 积分
好帖子 慢慢研究
交易0 分威望17934 点收听数听众数QQ买家信用卖家信用在线时间3974 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限40积分57754精华0UID34379
非常好的科普帖,留名学习
交易0 分威望69862 点收听数听众数QQ买家信用卖家信用在线时间4471 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限40积分114672精华0UID262459
大佬们不给加分吗?
苦逼客厅党
Source:Popcorn Hour A-400
AMP& &:WTS HV-A1+Winner HD5250SE
L+C+R:Sonance THX U2
SL+SR:Klipsch RS42-II
Sub& &:Sunfire HRS12
Project:Epson CH-TW6200
Screen:JK HD-W1N MK4 119 HDF
Cables:KBEH-L HDMI A-HDMI A V1.4 0.5m
& && && & FIBBR&&HDMI&&A-HDMI A V1.4& & 5m
& && && &Choseal&&4mm2& && && && &
& && && &Yarbo&&BW-05SP SILVER-PLATED
交易0 分威望3963 点收听数听众数QQ买家信用卖家信用在线时间243 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分6493精华0UID343670
7.1CH, 积分 6493, 距离下一级还需 1507 积分
我好像有一项设成32bit了& &&&忘记是功放还是电视&&或者是播放器& & 不知这样设对不对
交易0 分威望3589 点收听数听众数QQ买家信用卖家信用在线时间291 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分6599精华0UID309184
7.1CH, 积分 6599, 距离下一级还需 1401 积分
好贴,通俗易懂
交易0 分威望1698 点收听数听众数QQ买家信用卖家信用在线时间201 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分3808精华0UID210718
6.1ES, 积分 3808, 距离下一级还需 1192 积分
感谢楼主分享,很好的基础普及贴
交易0 分威望3353 点收听数听众数QQ买家信用卖家信用在线时间433 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分7783精华0UID343746
7.1CH, 积分 7783, 距离下一级还需 217 积分
写的好,长见识了
音箱:金榜movie155QX
功放:天龙AVR-1312
交易0 分威望6306 点收听数听众数QQ买家信用卖家信用在线时间710 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限40积分13506精华0UID134941
这年头的蓝光,暗部的色阶还是有明显的色带效应的。。这个那怕什么QDEO,都是解决不了。像狮门的那个全数字化的片头结尾时特别明显。。。这年头还真的没有特别强大的播放机能解决,这个是事实,估计MARVR也只能稍稍好一点。。
交易0 分威望1490 点收听数听众数QQ买家信用卖家信用在线时间100 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分2590精华0UID335840
6.1ES, 积分 2590, 距离下一级还需 2410 积分
科普帖,标记学习
交易0 分威望1490 点收听数听众数QQ买家信用卖家信用在线时间100 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分2590精华0UID335840
6.1ES, 积分 2590, 距离下一级还需 2410 积分
科普帖,标记学习,谢谢
交易0 分威望2204 点收听数听众数QQ买家信用卖家信用在线时间204 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分4344精华0UID312256
6.1ES, 积分 4344, 距离下一级还需 656 积分
得多看几遍
交易0 分威望415 点收听数听众数QQ买家信用卖家信用在线时间54 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分1055精华0UID346664
6.1CH, 积分 1055, 距离下一级还需 945 积分
交易0 分威望1535 点收听数听众数QQ买家信用卖家信用在线时间94 小时相册帖子日志记录好友主题分享注册时间最后登录阅读权限10积分2575精华0UID343973
6.1ES, 积分 2575, 距离下一级还需 2425 积分
得多看几遍,研究透彻
影音新时代网认证商家服务热线
: &&&&&&: &&&&&&: &&&&&&:
Copyright & 2002 - 2018
All Rights Reserved
网站事务:029-&&合作QQ:&&&微信订阅号:hd199_net&&&电子信箱:&&&
有权进行任何处置与中华人民共和国法律相抵制的任何言论与文章!有害信息24小时举报电话:
公安部备案:
家庭影院音响,_4k高清投影电视,_AV功放音箱搭配安装调试,_杜比全景声,_低音炮连接设置,_房间声学智能工程,_UBD蓝光电影音乐,_个人音乐,_数码影音,_未来音乐,_桌面音响,_耳机蓝牙音响
Powered by8123人阅读
Symbian(197)
下面的软件下载地址:
&这是一个筐,可以装mdat等其他Box。&
例:00 00 00 14 66 74 79 70 69 73 6F 6D 00 00 02 00 6D 70 34 31
&语义为:ftyp: Major
brand: isom
&&Minor version: 512
&&Compatible brand: mp41
&空白Box.装在ftyp等筐里
&例:00 00 00 08 66
&语意为: free: (null)
&这是一个筐,里面很丰富
&例:00 00 07 63 6D
&本身属性没有。但后面全是它的内容
moov:mvhd:
&这是moov的header.
&例:&00 00 00 6C
6D 76 68 64 00 00 00 00 7C 25 B0 80
&&7C 25 B0 80 00 00 03 E8 00 00 06 14 00 01 00 00
&&01 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00
&&00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00
&&00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00
&&00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
&&00 00 00 00 00 00 00 00 00 00 00 03&&&&&&&&&&&
&creation_time:&&&&&&&modification_time:&&&
&timescale:1000&//一秒分多少份,这里1000表示时间单位为1毫秒,这个设置很重要
&duration:1556&rate:10000 表示1.0&volume:100 表示最大声
&reserved:0&&reserved[0]:0&&&reserved[1]:0&&&
&Matric[0]:10000&&Matric[1]:0&&Matric[2]:0&&Matric[3]:0&&Matric[4]:10000&
&Matric[5]:0 Matric[6]:0&&Matric[7]:0&&Matric[8]:
&Predefined[0]:0&&Predefined[1]:0&&Predefined[2]:0&&Predefined[3]:0
&Predefined[4]:0&&Predefined[5]:0&&next_track_ID:3
moov:trak: tkhd:
&这是track header
&例1:&00 00 00 5C 74 6B 68 64 00 00 00 0F 7C 25 B0 80
&&7C 25 B0 80 00 00 00 01 00 00 00 00 00 00 06 08
&&00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
&&00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
&&00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
&&40 00 00 00 02 40 00 00 01 E0 00 00&&&&&&&&&&& 
&creation_time:&&&&&modification_time:&&&
&track_ID:1 第一轨index, 这个值很重要, 直接决定了视频和音频是否能同时出现, 如果音频和视频的track_ID都是1, 则会导致播放器无法播放.
&reserved_1:0 &
&duration:1544&//这个值对播放器很重要, 具体时间还和mvhd的timescale相关,用来指定了时长,1544个时间单位,如果是毫秒为单位,则为1544毫秒,
&volume:0 //这是视频轨,无音响
reserved_2[0]:0&&&&&reserved_2[1]:0&&&&&&&&
&layer:0 //由于我们的视频只有一层,所以这里总是0
&alternate_group:0 reserved_3:0&&&
&Matric[0]:10000&&&&Matric[1]:0&&&&Matric[2]:0&&&&Matric[3]:0&&Matric[4]:10000&&&
&Matric[5]:0&&&&Matric[6]:0&&&&Matric[7]:0&&&&Matric[8]:
&width:2400000 height:1e00000&//这两个单位都要右移16位才靠谱
&例2语义:
&creation_time:&&&&&modification_time:&&&
&track_ID:2 reserved_1:0 duration:1556&//这个值对播放器很重要, 用来指定了时长,具体时间还和mvhd的timescale相关
&volume:100 //这是音频轨,最大声 reserved_2[0]:0&&&reserved_2[1]:0&&&&&&&&
&layer:0 //只对视频有意义 alternate_group:0
&reserved_3:0&&&&Matric[0]:10000&&&&Matric[1]:0&&&&Matric[2]:0&&&&Matric[3]:0
&Matric[4]:10000&&&&Matric[5]:0&&&&Matric[6]:0&&&&Matric[7]:0&&&&Matric[8]:
&width:0 height:0
moov:trak: mdia:
&这个Box没有属性,是一个筐,装在trak里
moov:trak: mdia: mdhd
&creation_time:&&&modification_time:&&&
&timescale:24000&//这个位决定了播放的速度,不过他与duration的相乘后还是可以对应上面的mvhd设置
&duration:37037
&Language[0]:21&&&&&&Language[1]:14&&&&&&Language[2]:4
&pre_defined:0
&creation_time:&&&modification_time:&&&
&timescale:44100&
&duration:68608
&pad:0&//这个位无意义,是为了将后面language凑够16位之用
&Language[0]:21&&&&&&Language[1]:14&&&&&&Language[2]:4
&pre_defined:0
hdlr:&handler
&pre_defined:0 handler_type:vide //似乎除了handler_type以外,其余的属性无意义
&reserved0&&&&&&reserved:0&&&&&&reserved:0
&pre_defined:0 handler_type:soun
&reserved:0&&&&&&reserved:0&&&&&&reserved:0
moov:trak: mdia: minf: vmhd
media header
&graphicsmode:0&//Video轨的合成模式,未知语义
&opcolor:0&&&&&&&&opcolor:0&&&&&&&&opcolor:0&//同样未知
moov:trak: mdia: minf: dinf: dref
referrence
&entry_count:1&//只有一条Entry
&url:&&//即使有也是没内容,测试文件无论音视都没有内容
moov:trak: mdia: minf: stbl: stsd
stsd: Sample
Description box
&这是一个table, 里面放有很多entry
&例:entry_count:1
//视频,有一条entry
VisualSampleEntry:
stsd里装的一条一条的视频entry,
&data_reference_index:1
&pre_defined[0]:0
&pre_defined[1]:0&pre_defined[2]:0
&width:576 height:480
&horizresolution:480000 vertresolution:480000&//常数,即72dpi
&reserved:0 frame_count:1&&&compressorname://无
&depth:24&//颜色深度
&pre_defined:-1
AudioSampleEntry:
stsd里装的一条一条音频entry
&例:reserved[0]:0&&&&&&&&&&&&reserved[1]:0
&channelcount:2 samplesize:16 pre_defined:0 reserved_2:0
&samplerate:ac440000&//显然要右移16位才有意义
moov:trak: mdia: minf: stbl: stsd
mp4a: aac box 这个box实际就是继承了audio sample entry box
&reserved[0]:0&&&&&&&&&&&&reserved[1]:0
&channelcount:2 samplesize:16
&pre_defined:0 reserved_2:0 samplerate:
moov:trak: mdia: minf: stbl: stsd
esds: 包含在mp4a里,
&ES_ID:6400
&streamDependenceFlag:0
&URL_Flag=0&&reserved=0
&streamPriority:1 streamDependenceFlag:0
&dependsOn_ES_ID:52685
&m_iData_Size:23&//data的长度,算出来的
&Data[23]&//这里面有很一堆不知所云的数据, 一直到stts,但这堆数据极度重要,直接决定了解码器能否解码,在14496-1里有定义
&&&//实践证明: 这组数据与采样率有关,44100一组, 22050一组, 48000又是一组, 44100可以与48000共用一组
moov:trak: mdia: minf: stbl: stts
stts: Time to
&例1: 视频
&entry_count:1
&sample_count:37&//上面已经有duration时间了,duration指整个mdat中video的时长,这里37却为chunks数目
&sample_delta:1001&//1001 * 37=37037
sample_delta*sample_count=duration
&例2: 音频
&sentry_count:1
&sample_count:67 //音频分了67个chunks
&sample_delta:1024&//同上
moov:trak: mdia: minf: stbl: stss
Sample box
&例1: 视频
&entry_count:1
&sample_number:1
&但音频里没有这个box,
&这个Box非常重要, 决定了整个mp4文件是否可以拖拉, 如果这个box只有一个entry,则拖拉时将cpu达到100%, 如果这个box不存在, 可以拖拉, 也不会达到100%, 但是会略等一会, 通常做法可以搞100条.
moov:trak: mdia: minf: stbl: stsc
stsc: Sample
To Chunk Box 这个box非常重要,指示了在某一个chunk开始后面的chunks里每chunk有多少个sample, 一个sample就是一帧
&例1:视频&
&entry_count:1
&first chunk: 1, sample per chunk: 1, sample description index 1
&entry_count:1
&first chunk: 1, sample per chunk: 1, sample description index 1
moov:trak: mdia: minf: stbl: stsz
stsz: Sample
Size Box, 这个box乃重中之重, 指示了每个sample的大小
&sample size: 0&&&&&&&&&sample
&5127&&&&855&&&&&830&&&&&2327&&&&2742&&&&2373&&&&2716&&&&2365&&&&3061
&2170&&&&1888&&&&2427&&&&2578&&&&2218&&&&2084&&&&2138&&&&2319&&&&2586&&&
&2728&&&&2322&&&&3505&&&&2624&&&&1551&&&&2725&&&&2502&&&&2072&&&&1720&&&
&1382&&&&2653&&&&2177&&&&1323&&&&1492&&&&1801&&&&1765&&&&1985&&&&5028&&&
&sample size: 0&&&&&&&&&sample
&219&&&&&205&&&&&207&&&&&182&&&&&213&&&&&194&&&&&195&&&&&194&&&&&212
&188&&&&&159&&&&&179&&&&&186&&&&&189&&&&&184&&&&&184&&&&&190&&&&&188
&190&&&&&186&&&&&195&&&&&196&&&&&182&&&&&197&&&&&182&&&&&186&&&&&182
&182&&&&&185&&&&&182&&&&&193&&&&&186&&&&&184&&&&&187&&&&&175&&&&&173
&170&&&&&185&&&&&171&&&&&181&&&&&178&&&&&178&&&&&185&&&&&192&&&&&188
&187&&&&&175&&&&&167&&&&&177&&&&&182&&&&&167&&&&&173&&&&&177&&&&&175
&176&&&&&174&&&&&170&&&&&168&&&&&169&&&&&180&&&&&164&&&&&167&&&&&176&&&&
&mdat Box中被划分为很多个chunk,这里指出了每个chunk的大小.
moov:trak: mdia: minf: stbl: stco
stco: Chunk
Offset Box,这也是最重要的box, 指示了每个chunk的开始位置
&例1: 视频
&entry_count:37
&0x24&0x15d3&&0x1aaf&&0x1f84&&0x2a20&&0x35aa&&0x404a&&0x4c53&&0x5705
&0xda6&&0x767c&&0xd00&&0x3&&0xa9c9&&0xb447&
&0xbfdc&0xcbf7&&0xd5b8&&0xe4c0&&0xf064&&0xf7da&&0x103ea
0x10e70 0x117ff
&0xda&0xbbd 0x73 0x151cd 0x15a0a
&entry_count:65
&0x142b&0xa&&0x19f9&&0x1ded&&0x1ec2&&0x289b&&0x295e
&0x34d6&&0x3eef&&0x3fab&&0x4ae6&&0x4b99&&0xd&&0x62fa&
&0x63b2&&0x6cea&0xbe&&0x7ff7&&0x80b1&&0x8b86&&0x8c4a&
&0x95aa&&0x966f&&0x9f49&&0xa85d&0xa913&&0xb2d8&&0xb391&&0xbe61&
&0xbf22&&0xca84&&0xcb3c&&0xd509&&0xe369&&0xe416&0xef00&&0xefb9&
&0xf673&&0xf728&&0x31 0x10db0 0x11688
&0x11f66 0x24 0xde 0x13b0c 0x140e8 0x14197
&0xc9&0x24 0x158b2 0xcb 0x17616
moov:trak: mdia: minf: stbl: smhd
smhd: sound
media header
&balance:0 reserved:0
&暂时未知语义
avcC: AVC descriptor box
descriptor box非常重要, SPS PPS 都放这 在14496-15定义
&configurationVersion:1&&AVCProfileIndication:66
&profile_compatibility:192&AVCLevelI31
&reserved_1:63&&lengthSizeMinusOne:3
&reserved_2:7
&numOfSequenceParameterSets:1 numOfPictureParameterSets:1
&SPS length: 24&//第一个SPS的长度, 多个SPS可以继续往下
&PPS length: 4&//第一个PPS的长度, 多个PPS可以继续往下
aligned(8) class AVCDecoderConfigurationRecord {&
&unsigned int(8) configurationVersion = 1;&
&unsigned int(8) AVCProfileI&
&unsigned int(8) profile_&
&unsigned int(8) AVCLevelI &
&bit(6) reserved = &111111&b;
&unsigned int(2) lengthSizeMinusO &
&bit(3) reserved = &111&b;
&unsigned int(5) numOfSequenceParameterS&
&for (i=0; i& numOfSequenceParameterS &i++) {&
&&unsigned int(16) sequenceParameterSetL&
&&bit(8*sequenceParameterSetLength) sequenceParameterSetNALU&
&unsigned int(8) numOfPictureParameterS&
&for (i=0; i& numOfPictureParameterS &i++) {&
&&unsigned int(16) pictureParameterSetL&
&&bit(8*pictureParameterSetLength) pictureParameterSetNALU&
btrt: bit rate box
btrt: bit rate
&bufferSizeDB:7858&//告诉decoder开辟缓冲区大小?
&maxBitrate:413432&//最大Bit rate
&avgBitrate:371960&//平均Bit rate
&class AVCSampleEntry() extends VisualSampleEntry (&avc1&){
&AVCConfigurationB&
&MPEG4BitRateBox (); & & &// optional&
&MPEG4ExtensionDescriptorsBox (); // optional&
class AVCConfigurationBox extends Box(&avcC&) {&
&AVCDecoderConfigurationRecord() AVCC&
class MPEG4BitRateBox extends Box(&btrt&){
&unsigned int(32) bufferSizeDB;&
&unsigned int(32) maxB&
&unsigned int(32) avgB&
class MPEG4ExtensionDescriptorsBox extends Box(&m4ds&) {&
&Descriptor Descr[0 .. 255];&
Trouble shooting
1, 播放速度不正常, 哪个参数可调?
&mdhd-&timescale, 数字越大, 则播放速度越快
2, 拖拉不正常, 哪个Box可调?
&stss, 如果只有一条entry, 则拖拉会产生cpu 100%的情况. 如果没有entry, 则拖拉会略有停顿
3, 音频,视频分别整合成mp4文件可以播放, 但音频,视频都整合进mp4文件以后就无法播放.
&trak-&track_id, 两轨可能都用同一ID, 则不成. 视频为1, 音频为2,则可以解决这个问题
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:960459次
积分:12019
积分:12019
排名:第841名
原创:201篇
转载:246篇
评论:115条
(1)(1)(19)(1)(4)(2)(1)(2)(1)(4)(1)(2)(1)(4)(2)(2)(5)(7)(9)(4)(1)(5)(3)(3)(4)(1)(11)(12)(18)(42)(15)(1)(5)(6)(1)(5)(10)(27)(23)(3)(12)(16)(20)(20)(15)(16)(21)(25)(18)(9)(8)}

我要回帖

更多关于 爱奇艺格式转换mp4 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信