行者无疆 始于足下 - 行走,思考,在路上

8月的总结

忙碌充实的一个月。第一周研究ffmpeg,转码脚本初步完成,转交给QA测试;4、5号两天周末去了上海;第二周回来研究继续DVDrip和蓝光DVD的初步研究,确立了转码标准,初步研究了字幕合并的问题;第三周听了taobao的一个性能测试培训,优化脚本的转换速度到原来的3倍,周四晚上奔上海呆了三天–睡了两天地铺……见了见几年没见的老同学dx(比我高一头却经常被我扁的小弟),lwc(挺投缘的朋友,这么久没见,我的第一句话是“是不是每个女生大学里的第一件事情就是把头发养长啊?“,然后就听见了L爽朗的笑声);第四周主要在研究字幕合并问题,接触了mencoder工具,由于首批收费视频要上线,所以几乎每天都加班,为运营提供技术支持–周三00:30离开公司、周四9:30离开、周五00:10离开公司、周六早9:00-12:00来加班,忙碌崩溃的一周,成果是http://hua.taobao.com/shop/shop_home.htm?sellerid=60&inshop=yes ,感觉一是做产品真的很不容易,二是念了这么多年书,终于能做出一些东西来,还是小有成就感的wink。上周日约了一批人去植物园游泳,四米深的池子,九个大老爷们集体跳水的景观还是挺壮观的;天色黑的时候,水底的灯光粼粼闪动、非常漂亮,虽然四米的水压压的我耳朵有些痛,我还是不断地潜下去体验–;我想到了Le grand bleu

技术上还是接触了很多新鲜的概念和名词,"I don't know I don't know" ==> "I know I don't know",在此一并罗列出来:

  • 视频转码方面:
  • Linux
  • Concepts
  • Networking
  • Software Performance Testing
    • 流程:评估、资源申请、计划、准备(环境+数据)、执行验证、调优、报告
    • 指标:虚拟用户和并发、TPS、PV(Page Viewer)、响应时间、CPU利用率、Load(Linux)、TPS波动值、JVM内存走势、FGC
    • 执行方案:单场景、混合场景、用户行为
    • 通过标准:超时概率、错误概率、TPS、TPS波动模型、CPU(大于75%不通过)、Load(每核CPU Load大于1不通过)、JVM、Full GC
    • 工具:Jconsole、Jprofile、Jstat、profiler、Jmap、Nmon、Valgrind、Vmap、VisualVM
  • Others
  • Delicious

翻完潦草不堪的Notebook,想想这一个月看的东西还真挺杂的。除了以上这些,中途走神看了看《大话设计模式》的前面几章;看了《Learning Python》的大部分–但是还没有动手写过程序……感觉书比较啰嗦,一个知识点反反复复的说来说去;看了w3cschool.cn的部分在线教程,重点看了JavaScript,边看边用Emacs Org-mode做笔记,还是挺好用的;阿里内网也有非常多宝贵的资源,上班时间没事,我自己下载了历年来各种培训资料、内部试题、新人手册大概300M左右,看了一半左右,留了个大概印象;看的过程中走神,不知道怎么就点到了Qcon Beijing 2009的网站,又发现了一个宝库,流着口水下载了所有能下的pdf–虽然大部分还看不懂……

除了以上,还有一些IT名人的反思、成长经历也给了我很大的启发:

代码看累了就会走神,偶尔拾到几个贝壳,抄录在本子上–一些话:

  • 我总希望有人在什么地方等我,你也总希望有人在什么地方等你吧(几米《照相本子》)。
  • 幸福的步道,总是那么短,我们可不可以赖着不走。
  • 这是八月初的一个早晨,美国南部的阳光舒迟而透明,流溢着一种久经忧虑的让人鼻酸的、古老而宁静的幸福(张晓风)。
  • 得意时便生失意之悲。
  • 其实不是时间在流失、流逝的是我们自己。
  • 不论怎么样,大家总是一年一年地来到这个路口,然后各自去闯荡(好像来自pluskid的diary)。
  • We had job, we had fun, we had seasons in the sun. But the hills that we climbed, were just seasons out of time.
  • 我的征途是星辰大海。
  • Do not spend all your time on training or studying - this way you will probably become very exhausted and unwilling to compete more. Whatever you do - have fun. Once you find programming is no fun anymore – drop it. Play soccer, find a girlfriend, study something not related to programming, just live a life - programming contests are only programming contests, and nothing more. Don't let them become your life - for your life is much more interesting and colorful.

另外一件小事就是最近总是肚子隐痛,去校医院查了查,做了个涕泪肆流的胃镜,诊断结果是浅表性胃炎,病因应该是幽门螺旋杆菌发炎。开了七八盒药,先吃着看吧。没敢告诉家里,怕家里担心。今天老妈还给我发短信说“我们在提车.东风日产.天籁2.0黑色.自动档.都下来奖金20万“,“在北京.如果你上班需要借给你开呵呵“–心头不自主地酸了一下:这么多年的风风雨雨,从前的老瓦房、大锅土炕、猪圈地窖,到自己的一套房子,到我考上唐山一中保送到浙大,到今天买上了自己的车,我那只有小学文化的母亲,何等不易!

肚子又开始痛了,也是,这么晚了,还不睡,伤身体的。

“宠辱不惊,闲看庭前花开花落; 去留无意,漫随天外云卷云舒“

我想人到最后追求的应该是一种淡定祥和的心态。风雨彩虹、日晒雨淋、雪山草地、高山大河、青灯古寺,或许我们本来就不需要手机,不需要SNS,不需要E-mail,不需要这种高速快节奏的生活。这种速度让人窒息、如同龙卷风一样,瞬息万变,让我们无法掌控自己。人与人之间的交流“贵在心诚,幸在投缘“,整天挂着QQ,好友遍地,却不知道什么时间该找谁说些什么话。我们再也没有提笔书信时的那种思考、没有等待书信时的那种期盼。信息泛滥,手机滴滴嗒嗒,我们在这头时刻准备着–接受别人的审判。这或许是对网络通讯世界的一种讽刺?

road

接下来的安排:9月第一周数模国家赛,三天三夜的拼搏;看完Python和JavaScript,重点看C++算法和Networking;关注各种校园招聘;10月第一周回家呆几天修整,学车考驾照;十一回来结束实习,全面投入找工作事宜,争取在年底搞定;如果有时间出去走走,可选地东北或者东南亚。Over,暂时这样。安。

DVD视频提取转换初步研究

1 关于DVD格式

  • Digital Versatile Disc
  • DVD五种格式
    • DVD-VIDEO: 可达17G
    • DVD-ROM:
    • DVD-R: 4.7G
    • DVD-RAM: 可以作为虚拟硬盘
    • DVD-AUDIO: 比CD的音频品质好一倍
  • DVD区域码
    • DVD联盟将全世界依地理区域分为1-6区,而每一部DVD播放机及每一片DVD都会被锁定只能在某一区中播放(依产品贩卖的地区锁上相对应的区域码)。
    • 影片的锁码必须配合播放机的锁码(第1区的影片配合第1区的播放机,第2区的影片配合第2区的播放机.)你才能顺利的观赏影片!
    • 后来产的DVD播放机一般可以播放全区域的DVD
  • DVD版权保护
    • CSS(Content Scrambling System, 内容乱码系统)
    • 防类比设备翻录
    • 区码限制

2 关于VOB格式

  • vob文件用来保存所有MPEG-2格式的音频和视频数据,这些数据不仅包含影片本身,而且还有供菜单和按钮用的画面以及多种字幕的子画面流。
  • .ifo文件用于控制VOB文件的播放,在这个文件中可以找到如何控制.vob文件中数据播放的信息。
  • 有时候.ifo文件保存了一份副本,即同名的.bup文件。
  • 每个DVD光盘中都有视频管理器(VMG),它存放在VIDEOTS.ifo文件中,保存了光盘的全局信息,如光盘可以在哪个地区播放等。
  • 光盘还将用于显示菜单的数据保存在VIDEOTS.vob文件中,当光盘插入到光驱中时播放器会首先显示这个菜单,大多数菜单可让观众指定场景、选择语言字幕等。

3 关于TS流和PS流

3.1 TS流

  • DVD节目中的MPEG2格式,TS的全称则是Transport Stream。
  • MPEG-TS主要应用于实时传送的节目,比如实时广播的电视节目。
  • TS码流由于采用了固定长度的包结构,当传输误 码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。
  • 信道环境较为恶劣,传输误码较高时,一般采用TS码流
  • TS流(DVB-T,DMB-TH等)如果断了码流,后面的随时可以再开始解码怎么看都行。

3.2 PS流

  • DVD节目中的MPEG2格式,是MPEG2-PS,全称是Program Stream。
  • PS包由于长度是变化的,一旦某一 PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。
  • 在信道环境较好,传输误码较低时,一般采用PS码流 如DVD等等。
  • ps流(主要用在DVD上)如是中间丢了一断码流,后面的都没法播了。

4 关于DVD格式转换

4.1 几个概念

  • angle: 高级的DVD支持同一段场景的不同视角(angle), 一般的DVD只有一个视角
  • Title Set: 基本上一个Title Set的视频为一组内容, 有的DVD会有好几个Title Set, 第一个Title Set往往是最长的, 包含了主体影片的内容; 其余的Title Set往往是一些影片花絮啥的.
  • chapter: 应该是DVD字幕上用于选择章节的东西.

4.2 GUI抓取转换工具

4.2.1 Windows

4.2.2 Linux

5 CLI工具, 自动化(脚本形式)的抓取转换工具

5.1 基本工具

  • lsdvd, 读取dvd信息, 可以得到title set, duration信息等等
  • dvdbackup, rip video DVDs from the command line, 同样可以读取dvd信息, 有时需要libdvdcss的支持, ubuntu上的安装方法可以参考Ubuntu Wiki.
  • h264enc, 交互式的抓取工具, bash脚本, 整个脚本将近一万行(支持非常多的配置选项)
  • ffmpeg and mencoder, linux下两款主要的音频和视频格式转换工具, 绝大多数的GUI工具都是这两个命令行工具的封装. 很多Windows播放器底层也是这两个. ffmpeg还有个有趣的Hall of Shame
  • mplayer and vlc, linux下两款非常有名的播放器, 功能非常qiangda, 支持framebuffer和ascii lib的输出, 很有趣.

5.2 土法炼钢提取vob视频文件并合成一整个视频文件

  • 原理: vob文件可以直接拼接(cat file1.vob file2.vob >> new_file.vob), 拼接出来的vob文件可以正常播放(测试了两个拼接的文件和拼接后转换的f4v文件, 网页和本地播放器均正常播放到结尾)
  • 思路:
    • 先将整个的DVD内容拷贝到硬盘(比较节省光驱资源)
    • 进入DVD视频文件目录(一般为VIDEO_TS)
    • 用lsdvd或者dvdbackup工具找出duration最长的title set, 提取出这个title set里面的vob文件
    • cat命令拼接这些vob成一个新的vob文件
    • 利用ffmpeg转换脚本转换成新的格式

5.3 h264enc交互式脚本合并

  • 原理: 给予mencoder的转换工具, 可以自动化的设置码率, 滤镜, crop参数, 提取vob文件合并到一个文件中(输出格式可以指定)
  • 思路:
    • 多做实验, 将每次做实验的结果进行对比, 选出最好的一组参数写成配置文件, 调用h264enc做自动化的处理

6 Todo list

  • 深入研究下mencoder的使用方法, 以及mencoder和ffmpeg的不同和关联
  • 深入了解分析下h264enc工具的脚本, 了解下h264enc的配置文件




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee