dwing dwing
关注数: 0 粉丝数: 717 发帖数: 9,423 关注贴吧数: 6
UCI 0.611 (十周年纪念版) (今后如果没有大的变化, 不再发帖和公布下载链接了, 有兴趣可以关注下面的github链接, 那里会不定期更新) UCI是一种基于H.264/HEVC intra帧压缩算法和数据流格式的静态图像封装格式. 而且不受图像宽高的一些限制,支持alpha透明通道等特性, 与JPEG,JPEG2000,HD-Photo等静态图像压缩算法相比具有更高的压缩效率. 目前公开的命令行工具暂时只支持24/32位BMP与UCI格式的相互转换, 同时提供二次开发用的dll/lib, 也可以用于XnView和Susie的解码插件. 编码工具只支持x264/x265作为编码内核, 解码内核使用FFmpeg中的libavcodec解码器. HEVC编码的uci文件只能用0.6以后版本的UCI来解码. 编码时加"-hevc"参数,使用x265.exe来编码, 其它使用方法均未改变. 编码所需的x264.exe和x265.exe需要另外下载(链接见readme.txt)或自己编译. 与bpg相比, uci的编解码性能貌似更好,可自定义编码参数, 画质差不多. 下载: pan。baidu。com/s/1I6HFmp4ZLZJfzAinocCwiQ 源码: github。com/dwing4g/uci UCI相关介绍: tieba.baidu.com/p/511089688 0.61版发布贴: tieba.baidu.com/p/5551010529 0.6 版发布贴: tieba.baidu.com/p/4816306191 0.4 版发布贴: tieba.baidu.com/p/586018069 最近更新历史: 0.611(2018-11-08) 更新FFmpeg至4.1 ,使用MinGW-GCC 8.2和VC2017(15.8.9)编译,默认二进制发布版本使用VC2017编译(不再附带x265) 0.61 (2018-02-13) 更新FFmpeg至3.4.2,使用MinGW-GCC 7.3和VC2017(15.5.6)编译,默认二进制发布版本使用VC2017编译(发布附带x265 8-bit 2.6+37),增加64位编译版本 0.602(2017-06-08) 更新FFmpeg至3.3.2,使用MinGW-GCC 7.1和VC2017编译,默认二进制发布版本使用VC2017编译(发布附带x265 8-bit 2.4+14) 0.601(2016-12-21) 更新FFmpeg至3.2.2,调整x265默认编码参数(发布附带x265 8-bit 2.1+69) 0.6 (2016-10-10) 更新FFmpeg至3.1.4,支持x265编码,支持VC2015编译,默认二进制发布版本使用VC2015编译(发布附带x265 8-bit 2.1+20)
UCI 0.61 (增加64位版本) UCI是一种基于H.264/HEVC intra帧压缩算法和数据流格式的静态图像封装格式. 而且不受图像宽高的一些限制,支持alpha透明通道等特性, 与JPEG,JPEG2000,HD-Photo等静态图像压缩算法相比具有更高的压缩效率. 目前公开的命令行工具暂时只支持24/32位BMP与UCI格式的相互转换, 编码工具只支持x264/x265作为编码内核, 解码内核使用FFmpeg中的libavcodec解码器. HEVC编码的uci文件只能用0.6以后版本的UCI来解码. 编码时加"-hevc"参数,使用x265.exe来编码, 其它使用方法均未改变. 发布包 uci0610.7z 附带的 x265.exe 修正了原版的一个bug 所以目前必须使用这个exe来编码(具体原因见0.6版本发布贴的2楼) 与bpg相比, uci的编解码性能貌似更好,可自定义编码参数, 画质差不多 下载: pan。baidu。com/s/1nvUwAZv 源码: github。com/dwing4g/uci 最近更新历史: 0.61 (2018-02-13) 更新FFmpeg至3.4.2,使用MinGW-GCC 7.3和VC2017(15.5.6)编译,默认二进制发布版本使用VC2017编译(发布附带x265 8-bit 2.6+37),增加64位编译版本 0.602(2017-06-08) 更新FFmpeg至3.3.2,使用MinGW-GCC 7.1和VC2017编译,默认二进制发布版本使用VC2017编译(发布附带x265 8-bit 2.4+14) 0.601(2016-12-21) 更新FFmpeg至3.2.2,调整x265默认编码参数(发布附带x265 8-bit 2.1+69) 0.6 (2016-10-10) 更新FFmpeg至3.1.4,支持x265编码,支持VC2015编译,默认二进制发布版本使用VC2015编译(发布附带x265 8-bit 2.1+20) 0.602 版发布贴: tieba.baidu.com/p/5153765630 0.6 版发布贴: tieba.baidu.com/p/4816306191 0.4 版发布贴: tieba.baidu.com/p/586018069 UCI相关介绍: tieba.baidu.com/p/511089688
UCI 0.602 UCI是一种基于H.264/HEVC intra帧压缩算法和数据流格式的静态图像封装格式. 而且不受图像宽高的一些限制,支持alpha透明通道等特性, 与JPEG,JPEG2000,HD-Photo等静态图像压缩算法相比具有更高的压缩效率. 目前公开的命令行工具暂时只支持24/32位BMP与UCI格式的相互转换, 编码工具只支持x264/x265作为编码内核, 解码内核使用FFmpeg中的libavcodec解码器. HEVC编码的uci文件只能用0.6以后版本的UCI来解码. 编码时加"-hevc"参数,使用x265.exe来编码, 其它使用方法均未改变. 发布包 uci0602.7z 附带的 x265.exe 修正了原版的一个bug 所以目前必须使用这个exe来编码(具体原因见0.6版本发布贴的2楼) 与bpg相比, uci的编解码性能貌似更好,可自定义编码参数, 画质差不多 下载: pan。baidu。com/s/1i5eKcdR 源码: github。com/dwing4g/uci 最近更新历史: 0.602(2017-06-08) 更新FFmpeg至3.3.2,使用MinGW-GCC 7.1和VC2017编译,默认二进制发布版本使用VC2017编译(发布附带x265 8-bit 2.4+14) 0.601(2016-12-21) 更新FFmpeg至3.2.2,调整x265默认编码参数(发布附带x265 8-bit 2.1+69) 0.6 (2016-10-10) 更新FFmpeg至3.1.4,支持x265编码,支持VC2015编译,默认二进制发布版本使用VC2015编译(发布附带x265 8-bit 2.1+20) 0.526(2016-09-30) 更新FFmpeg至3.1.3,使用MinGW-GCC 6.2编译 0.6 版发布贴: tieba.baidu.com/p/4816306191 0.4 版发布贴: tieba.baidu.com/p/586018069 UCI相关介绍: tieba.baidu.com/p/511089688
关于压制分辨率的选择问题 在视频压制领域, 有一个比较有争议的问题是: 如果给定了码率(或者固定了视频时间和文件大小), 如果码率给的不是很高, 那么是否要降低分辨率压制? 这个问题也可以说成: 选择"高分辨率低质量", 还是"低分辨率高质量"? 这个问题在注明的压制论坛doom9上有几位牛人给出了自己的解答: forum。doom9。org/showthread.php?t=171929 解答的人数并不多, 看来在专业的论坛上并不需要很多争论, 答案真的是国内大部分压制者所想的那样么. 为了更好地普及解释这个问题, 我翻译主要的解答贴: CarlEdman: 一般来说, 我建议总是保持片源的分辨率,然后设置编码参数来达到想要的目标码率. 理由是降低采样(分辨率)也算是一种有损压缩, 而且是很垃圾的一种, 直接把视频信号中的高频信息全部丢掉了. H264(或特指x264)是很智能的压缩, 它能从时间和空间两个角度丢弃高频信息, 就像降低采样一样, 但它也有选项保留普通降采样所损失的细节. 通常, 你应该尽可能使用智能的算法来做整体压缩, 而不是无脑地使用垃圾压缩算法(降采样)后再用智能压缩算法(H264). 当然, 你用更低的码率压制会损失很多细节, 但你用降采样通常会损失更多. 以上规则仅有的例外,我想有这几种: (a)当你一定要降低目标分辨率,无所谓高频信号的损失时; (b)当你编解码时间很有限,无法满足片源分辨率的编解码时; (c)极端低码率的情况,h264的块效应会很明显. 其它情况, 还是按片源分辨率用x264来压制吧. 也有人提到, 很多片源的细节并不丰富, 不值得保留1080p, 720p就够了, 甚至在播放时提高画面锐度也不错, 这也算一种例外吧. 还有人不相信x264的智能, 怕码率太低导致比降分辨率更难看的结果. 以上基本解释了整个问题以及争论点. 我个人再补充一点, 如果码率给的充足,或者动态画面并不多,或动画类型的,低一些码率其实也够充足时, 那么降分辨率的做法几乎是完败. 当然这也说明码率给的不合理, 如果用crf模式压基本不会出现这种情况. 国内有很多压HDTV影视剧, 在给了>1Mbps码率的情况下, 不敢用720p, 而降低到1024x576去压, 恐怕大多都选错了吧.
[转载]Facebook移动端照片预览背后的技术 当在 Facebook 移动端上浏览某个人的用户资料或页面时,首先看到的往往是图片。这些图片是构成 Facebook 体验不可缺少的一部分,但有时候,图片的下载与展示非常慢,在低速或移动网络中尤其如此。而在像印度这样的发展中国家市场上,许多 Facebook 新用户主要是使用 2G 网络。近日,Facebook 工程师 Brian K Cabral 和 Edward Kandrot撰文描述了 Facebook 解决这一问题的过程。   封面照片是屏幕上最显眼的部分,但它也是加载最慢的部分之一。这主要有两个原因:一是封面照片的大小常常达到 100KB,而 2G 连接的传输速度可能只有 32KB/秒;二是应用程序需要发送两个网络请求才能显示封面照片。它首先向 GraphQL 服务器发送请求,获得照片 URL,然后发送第二个网络请求,使用该 URL 从 CDN 获取照片。第二个网络请求的延迟相当长,比第一个长许多。   为了解决上述问题,他们希望能够由原照片生成一张 200 字节大小的效果图,然后将其作为 GraphQL 响应的一部分在第一次请求应答中直接返回,这样可以省掉第二次请求,极大地缩短用户资料和页首的显示延迟。当然,他们最终还是要从 CDN 下载完整照片并进行展示,但这可以在后台进行。至此,问题变成如何将照片压缩成 200 字节。   他们希望照片的效果图有一种磨砂玻璃的效果。这既有趣,又能与原始照片保持一致。磨砂玻璃效果采用高斯滤波器比较容易实现,而且图片越模糊,分辨率就越低,图片的尺寸就越小。不过,为了提供良好的用户体验,分辨率也不能太低。通过多次尝试,他们得出,42x42 的图片可以达到他们想要的效果,而分辨率再高一些并不会带来更好的效果。但是,即使只显示图片的 DC 分量,每个像素仍然需要 3 个字节,那么 42x42x3 就是 5292 字节,远远超出 200 字节的目标。   他们开始评估标准的压缩技术,试图找出一种最好的方法,将数据压缩至 200 字节。遗憾的是,只是对图片进行熵编码(比如 zlib)的话,只能将图片压缩一半,仍然太大。他们还评估了其它若干非标准技术,但最终,他们决定试一下 JPEG 图像编码。遗憾的是,JPEG 头本身就有几百个字节的大小。不过,去掉 JPEG 头,编码的数据有效负荷接近 200 字节。   于是,他们开始探索,JPEG 图片是否有可能使用一个固定的头,那样就可以将其存储在客户端,而不需要传输。JPEG 头包含多个表。在Q值一定的情况下,量化表是不变的。通过试验,他们发现,Q20 生成的图片可以满足他们的要求。虽然他们的图片不是固定尺寸,但基本上都限制在 42x42 以下。他们还仔细查看了 JPEG 头中的其它内容,发现只有 Huffman 表会随着图片的不同发生变化。Q值、图片数据及图片尺寸决定着 Huffman 表中的频率值,每一项变化都会导致不同的压缩比和有效负荷字节数。他们在一组图片上进行了试验,并最终找出了一个可以作为标准的 Huffman 表。   虽然他们处理了大量的图片,但总有一些该方案不适用的情况。为此,他们增加了一个版本号。如果发现任何极端情况,或者未来发现了更好的 Huffman 表,那么他们就可以更新相关图片的版本号,并将新表发送给客户端。最终的格式包含一个字节的版本号、一个字节的宽度、一个字节的高度和大约 200 字节的有效负荷。服务器只将这一格式作为 GraphQL 响应的一部分发送,然后由客户端将 JPEG 体附加到预定义的 JPEG 头上,生成一个普通的 JPEG 图片。经过标准的 JPEG 解码后,客户端可以运行预定的高斯模糊,并拉伸其尺寸以适应窗口大小。   最终,他们获得一种可以满足需求的格式。在网速缓慢的情况下,这帮助他们将用户资料和页面加载时间缩短了 30%。而在网速非常快的情况下,这可以确保用户立即看到封面照片预览,提升了整体体验。
UCI 0.525 (五周年开源纪念版) UCI (Ultra Compact Image) 0.525 by dwing 2013-12-20 开源托管站点: http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fcode&urlrefer=422815d4fc0590d72faef4fce38fc526。google。com/p/ultra-compact-image/ 已编译文件包(uci0525.7z): http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1vN6Aq&urlrefer=07b04544990e70d064fb2005da95387a * 简介 UCI是一种基于H.264 intra帧压缩算法和数据流格式的静态图像封装格式. 而且不受图像宽高的一些限制,支持alpha透明通道等特性, 与JPEG,JPEG2000,HD-Photo等静态图像压缩算法相比具有更高的压缩效率. * 更新历史 0.525(2013-12-20) 更新FFmpeg,使用MinGW-GCC 4.8.2编译,发布五周年开源纪念版 0.524(2013-05-17) 更新FFmpeg,命令行程序使用unicode处理所有字符串 0.523(2013-04-28) 更新FFmpeg,修正上个版本解码的色彩空间转换问题 0.522(2013-04-05) 更新FFmpeg,使用MinGW-GCC 4.8.0编译,修正偶尔YUV420->RGB转换越界访问的bug,防止多线程同时解码,部分改用libswscale转换色彩空间,使画质更好 0.521(2012-07-06) 更新FFmpeg,使用MinGW-GCC 4.7.1编译 0.52 (2012-01-19) 更新FFmpeg,编码时YUV通道改用10bit输入,同时支持8/10bit x264编码及解码,支持指定x264的程序名,调整默认参数,取消支持非全范围YUV的编码及无用的Y通道修正 0.511(2011-12-23) 更新FFmpeg,使用MinGW-GCC 4.6.3pre编译,C++的例子改为C的例子,修正susie接口在MangaMeeya中的崩溃bug 0.51 (2011-09-11) 更新FFmpeg,增加解码的JNI接口和Java的使用例子,一些细节改进 0.5 (2011-07-29) 更新FFmpeg,新增4种格式的编解码,支持全范围YUV映射,直接支持H.264的YUV444编码,取消支持以前的YUV444编码,更新默认subme参数为11 0.494(2011-07-15) 更新FFmpeg,增加UCIDebug接口,改用MinGW-GCC 4.6.1编译 0.493(2011-03-13) 更新FFmpeg,改用VC2010(sp1)编译,编码质量的范围从1~50改为0~51,修正0.492版质量0的alpha通道的解码问题,增加LuaJIT的使用例子 0.492(2011-02-01) 更新FFmpeg,改用VC2010(sp1-beta)编译 0.491(2010-11-13) 更新FFmpeg 0.49 (2010-07-26) 更新FFmpeg,支持新版x264设置图像大小的参数 0.48 (2010-05-22) 更新FFmpeg,取消了作用不大的PGO优化,修正编码器对新版x264输出无用信息的消除,修正yuv2bmp对YUV420处理的严重bug 0.47 (2010-04-03) 更新FFmpeg,改用VC2010编译,启用PGO优化,取消了作用不大的MMX优化 0.46 (2010-03-13) 更新FFmpeg,改用VC2010(rc1)编译 0.45 (2010-01-17) 更新FFmpeg,修正前一版本的几个bug 0.44 (2009-12-12) 更新FFmpeg,改用VC2010(beta2)编译,使用线性插值改进YUV420到RGB的转换,修正访问susie插件接口可能导致崩溃的bug 0.43 (2009-11-28) 更新FFmpeg,改用VC2010(beta1)编译,去掉了一些无用的容错处理(减小体积并可能提升解码速度) 0.42 (2009-07-12) 更新FFmpeg,禁用interlace(减小体积并可能提升解码速度),对新版x264参数的修正,修正上一版本MMX解码优化没有启用的bug 0.41 (2009-06-27) 更新FFmpeg,少部分解码代码使用MMX优化,RGB->YUV转换略微调整,修正例子程序中的错误 0.4 (2009-05-30) 更换解码接口,YUV420相关转换使用MMX优化,更新FFmpeg,增加imgdec工具,增加Susie解码插件的支持 0.31 (2009-04-18) 更新FFmpeg,增加UCI格式描述和C++/C#的使用例子 0.30 (2009-02-27) 更新FFmpeg,为了避免一些兼容性和性能问题程序不再加壳 0.29 (2009-02-15) 支持直接编码YUV420格式,默认去掉x264的一些无用信息,修正一些参数和细节 0.28 (2009-02-12) 更新FFmpeg,增加YUV2BMP程序,--quiet参数改为-quiet,少量细节修正 0.27 (2009-02-03) 修正XnView浏览32位图偏色bug,解码初始化改在载入ucidec.dll时执行 0.26 (2009-02-02) 更新FFmpeg,增加--quiet参数,修正图像宽度为奇数可能对图像解码有误的bug 0.25 (2009-01-31) 修正图像宽度或高度为某些值时无法正常解码的bug 0.24 (2009-01-28) 支持分离YUV编码,编码时增加输出YUV文件的选项,一些细节修正 0.23 (2009-01-23) 提升解码速度,改善UV通道的编码质量,修正某种情况下x264进程阻塞的bug 0.22 (2009-01-18) 支持目前最新版XnView读取UCI的插件,修正可能导致程序阻塞的bug 0.21 (2009-01-17) 编解码器支持stdin/stdout,编码器不再使用临时文件,修正一些细微bugs 0.2 (2009-01-10) 减小编解码器体积,优化解码速度,修正解码接口返回值的2个bugs 0.11 (2008-12-27) 编码器增加Y通道修正,其它一些细节修正及速度略微优化,FFmpeg版本:svn16354 0.1 (2008-12-20) 初始内部测试版本,FFmpeg版本:svn16238 前一版本(0.524)发布贴: tieba.baidu.com/p/2333527735 0.4 版发布贴: tieba.baidu.com/p/586018069 UCI相关介绍: tieba.baidu.com/p/511089688
国产H.265(HEVC)解码器试用报告 最近迅雷和PPS等几个国内视频领域厂商突然宣布支持H.265, 并很快提供了测试渠道, 很让人出乎意料. 且不说普通用户, 很多压片专业用户估计也始料未及, 国内竟然有这么高调推广新技术, 而且还是这种硬功夫的编解码器领域. 虽然可以不对这些商业化的宣传抱有期望, 甚至是严重怀疑的态度, 但对新技术的推广有利的话, 我们这些技术宅还是应该感到很期待的. 我还没去来得及更新迅雷看看, 就从某处得到了所用的解码器, 而且是dshow的filter, 这种形式很正常, 也比较容易集成到迅雷看看之中. 简单看了下, 解码器分FLVSplitter.ax和HEVCDecFltr.dll两个, 前者应该是修改过的FLV分离器, 后者才是真正的HEVC解码器. 很明显, 解码器的资源暴露了来源: 公司是Strongene, 产品名称为Lentoid Codec, 版本是2.0.0.10 很快就找到所属的官方网站: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fxhevc.com&urlrefer=4c37cf389ace83d16a429300d2771ff2 和介绍的一样, 是和北京大学计算机科学技术研究有关联的新公司, 以视频和图像编码技术为核心. 网站提供了简单的技术介绍、视频样本和解码器, 和我下载到的一模一样, 可惜没有公开编码器. 技术介绍中值得一提的是"比H.264少一半的码率提供相同清晰度", "编码器仅比x264慢5倍", 并没有提到解码器性能慢多少, 只能自己来测试了. 视频样本有源版以及和x264编码对比的各种分辨率样本, 至少大家能自己来测试的对比这个HEVC的质量, 即使没有编码器. (待续)
1 下一页