蜗牛的壳

蜗牛的壳

我行依我素 | 苦苦咸咸就是我 | Snailium的个人网站

浏览模式: 标准 | 列表
全部文章

关于 AVC High@L5.1 降级为 L4.1 的注意事项


之前一直在研究 Xbox360 能播放的高清视频,也大概摸索了一下 Xbox360 能播放的 H.264 视频制作方法。但是这几天在处理 CHD 制作的日本樱花的时候,制作完的 MP4 文件在 Xbox360 上播放死机。

仔细在网上搜索了一下,问题出在视频降级环节上。

用 h264info 更改 Profile Level 实际上用的是欺骗法(将第 7 个字节由 0x33 改成 0x29)。这种方法只对 Level 4.1 兼容视频有效。

何谓 Level 4.1 兼容视频?这要从 Profile Level 说起。具体的 Profile Level 规则我没有看(也没时间去研究),看 Doom9 上各位达人的讨论,问题出在缓冲区上。Level 5.1 要求的解码器缓冲区要大于 Level 4.1,所以如果没有足够大的缓冲区,解码就会出错。在 Xbox360 上的表现就是死机。

那何谓 Level 4.1 兼容视频呢?简单来说,有些视频虽然标注为 Level 5.1,但是解码时缓冲区的要求很小,甚至小于 Level 4.1 的规定。这样一来,用 Level 4.1 的解码器完全可以解码这个“Level 5.1”视频。这样的视频就被称之为“Level 4.1 兼容(Level 4.1 compliant)”。

在大致搞明白原理之后,下一步就是研究对策。既然有“Level 4.1 兼容”一说,也就证明有些视频还是可以无需重压直接降级的。要确定视频是否“Level 4.1 兼容”,比较方便的方法是使用 mkv2vob

首先,在 Configuration 标签中,把 Video Transcoding 选成 Never。这样可以避免自动重压。

大小: 62.25 K 尺寸: 400 x 387 浏览: 6 次点击打开新窗口浏览全图

然后在 Add File 标签下,选择 MKV 文件和输出目录,再点 Add File,软件就会自动检查视频。

大小: 48.28 K 尺寸: 400 x 387 浏览: 1 次点击打开新窗口浏览全图

如果出现“Transcoding Required: Not L4.1 Compliant”,就说明视频不能被 Level 4.1 解码器正确解码,需要重新压制。

另外,如果源片的音频是 AAC 5.1 的话,还涉及到音轨映射问题。在这里就不详细叙述了,具体参见“参考资料 2”,


参考资料:
1. Doom9.org: High Profile 5.1 -> 4.1
2. Flexion.org: Converting MKV

多音轨 WMV-HD 制作指南


本文主要介绍多语言音轨 WMV-HD 的合成,关于 5.1 声道 WMA Pro 音轨制作,请参见相关文章。

wmvMerge.pl - Phase 0


合并两段 WMV 文件,理论上来讲不是什么麻烦的事,在网上也能找到很多相关软件。可是,网上的软件或多或少都有些问题,比如说画面抖动、音画不同步等等。就连收费的商业软件也不例外。无奈之下,只有自己写一个合并工具。

用什么语言比较好呢?学软件的各位一定想到了 C++ 和 Java。

No!我不要用连 unsigned integer 都没有的 Java!

想来想去,最简单的还是 Perl。不用安装任何编程/调试工具,反正我的 WD MyBook World Edition 里面带着 Perl 5.8.8 程序,直接就用它了!

从头开始写一个脚本还真费事。昨天晚上花了好几个小时才完成 argument parsing、PrintHelp() 和 verbose functions。今天写了一点点 Header Object parsing。

最麻烦的是 ASF 容器各个字段都是用 little endian in byte order with 32-bit boundary(32 位为一组、以字节为单元的 little endian),其中的 128 位 GUID 需要分 4 组进行逆序运算……。用 Perl 搞一个 endian 转换还真是麻烦。

慢慢来吧,也不知道什么时候才能到 Phase 1。没准又半途而废了。


参考阅读:Advanced Systems Format (ASF) Specification

Xbox 360 夏季更新 硬盘安装节省空间


终于被抽中体验预览版夏季更新了。看到网上说,这次夏季更新将会让硬盘安装节省空间,于是就试了一下。结果果然如此。见下表。

游戏 08秋季更新 09夏季更新
NFS: ProStreet 5.5 GB 5.1 GB
Overlord 3.5 GB 2.4 GB
Overlord 2 3.4 GB 3.2 GB
The Orange Box 4.7 GB 3.9 GB
Sacred 2 6.5 GB 6.3 GB
Raiden Fighters Aces 3.4 GB 485 MB
GTA IV 6.8 GB 6.5 GB
DOA 4 6.8 GB 6.7 GB
Medal of Honour: Airborne 6.0 GB 4.7 GB
DDR Universe 3.4 GB 3.0 GB
DDR Universe 2 3.4 GB 3.2 GB
DDR Universe 3 6.1 GB 3.6 GB
Ace Combat 6 6.4 GB 5.1 GB
BF: Bad Company 5.9 GB 4.9 GB
Fable II 6.8 GB 6.6 GB

败家——Sony HDR-TG1 入手


之前的 Sony HDR-HC3 因为带仓问题已经正式成为照相机。修过一次之后问题依旧。无奈只能换一台摄像机。

正好这次去多伦多看到 HDR-TG1 清仓,$599.99。厌烦了带仓、光盘和硬盘之后,打算开始尝试一下记忆卡存储。带仓精密元件太多,容易坏;光盘和硬盘怕震。

犹豫了再三,刷卡买下了最后一个 HDR-TG1,唯一让人不爽的,这是台演示机。

大小: 700.33 K 尺寸: 225 x 400 浏览: 0 次点击打开新窗口浏览全图

大小: 723.62 K 尺寸: 400 x 225 浏览: 0 次点击打开新窗口浏览全图

10W 公里达成


Malibu 终于上 10 万公里了。

大小: 436.77 K 尺寸: 400 x 300 浏览: 0 次点击打开新窗口浏览全图

大小: 437.63 K 尺寸: 400 x 300 浏览: 0 次点击打开新窗口浏览全图

P.S. 图是在 417 高速上用手机拍的,属于危险驾驶,好孩子不要学哦。

Sigh!


终于,我也沦落到用纯英文写标题的地步了。

一大早起床,把妈妈送上飞机。妈妈在我这呆了一个半月,天天给我做好吃的,这也算是一种幸福吧。但是,妈妈也会时不时地给我讲些大道理。妈妈真的老了,说话开始絮叨,经常一个主题能说两个小时,而且重复地说好几遍。

起初,我还能安稳的坐在那里,跟她老人家说两句。后来,烦了,干脆说几句不痛不痒的话,然后就自顾自玩去了。

这些日子没工作,圈在家里面,自甘堕落。老妈着急,这我也知道。只是我自己内心在逃避,不愿意提起这个。日常生活的压力已经很大了,找工作的压力,简单来说,关系着下一顿饭,关系着能不能活下去,已经让我快受不了了。我只是不想再添加额外的压力,为自己开脱罢了。从机场回家的路上,我想,或许我就是只刺猬,保护了自己,却刺到了别人。

我一直在做着“白日梦”,回国创业的白日梦。之所以说是“白日梦”,是因为老爸老妈都不看好这条路。每一次我刚提起这方面的事,总要给我扣一大盆冷水。久而久之,我也就不说了。但是,我心里还是在想,趁着年轻拼一把,不成功则成仁。

我的现实很艰苦,梦境更艰苦。究竟,要不要睁开眼,究竟,能不能撑下去,我不知道。或许这也可以叫做“前途未卜”。

最后,祝老爸生日快乐,祝老婆生日快乐。

Linux 下内存不够的补偿方法


怕忘了,就要记下来。

今天在家搞我的 WD MyBook World Edition。fsck 的时候出现内存不足错误。

  1. [root@Locker ~]# fsck /dev/md4
  2. fsck 1.38 (30-Jun-2005)
  3. [/sbin/fsck.ext3 (1) -- /shares/internal] fsck.ext3 /dev/md4
  4. /dev/md4 has been mounted 63 times without being checked, check forced.
  5. /dev/md4: Error allocating block bitmap (4): Memory allocation failed
  6. e2fsck: aborted

无奈上网搜了一下,需要加 swap(相当于虚拟内存)。方法如下(1GB):

  1. dd if=/dev/zero of=/swapfile bs=1M count=1000
  2. mkswap /swapfile
  3. swapon /swapfile

使用之后再释放:

  1. swapoff /swapfile
  2. rm /swapfile

参考文章:http://mybookworld.wikidot.com/forum/t-37543/worrisome-error-messages-about-the-hard-drive-badcrc

Linux 分区不用整理碎片?谁说的!


早就想给我的 WD MyBook World Edition 整理一下硬盘了,但是每次上 Google 搜 linux defrag 的时候,结果总是一群 Linux 狂在说“Linux 无需整理磁盘”、“Linux 磁盘空间管理比 Windows 强,不会产生碎片”,还有网站详细地列出 Linux ext3 分区和 Windows NTFS 分区的工作原理,从而证明“Linux 无需整理磁盘”(最典型的就是“抽屉理论”)。

最近 NAS 总死机,用 fsck 查了下硬盘,得到了这么个结果:

  1. [root@Locker ~]# fsck -p -f /dev/md4
  2. fsck 1.38 (30-Jun-2005)
  3. /dev/md4: 9106/121094144 files (25.7% non-contiguous), 232500435/242163776 blocks

inode 碎片(基本上可以理解为磁盘碎片)竟然达到了 25.7%!

我一直怀疑 Linux 的文件管理机制在大量新增/删除文件之后的碎片程度,看来我的担心从某种角度上来说是正确的。

后来又找到一篇(稀有)文章,里面详细讲述了 Linux 分区出现碎片的可能性和解决方法。等有时间了翻译一下。

浅谈C语言中的 malloc() 和 free()


在网上看到了一篇不错的文章,转来收藏。原帖地址:http://bbs.bccn.net/viewthread.php?tid=82212

在 C 语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对 C 中的 malloc() 和 free() 两个函数的了解甚少,只知道大概该怎么用——就是 malloc() 然后 free() 就一切 OK 了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!

如果不扯得太远的话(比如说操作系统中虚拟内存和物理内存如何运做如何管理之类的知识等),我感觉这篇文章应该是比较全面地谈了一下 malloc() 和 free()。这篇文章由浅入深(不见得有多深)分三个部分介绍主要内容。

Records:23912345678910»




« 2010年09月 »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

标签

用户


链接


归档


信息

  • 分类数量: 13
  • 文章数量: 239
  • 评论数量: 99
  • 标签数量: 435
  • 附件数量: 370
  • 引用数量: 0
  • 注册用户: 9
  • 今日访问: 238
  • 总访问量: 571650
  • 程序版本: 1.6