序:
最近在搞跟视频相关的东西,自己用相关手段生成的ps文件在mplayer上播放不能很好的获取总的播放时间,当然在暴风等一些播放器上也不能很好的获取到时间,当然暴风咱也只能“眼睁睁”的看着它耍横,没办法,谁叫人家NB,不开源的东西,想了也是白想,那咱们就来一个曲线救赵的做法,当然首先想到的就是大名鼎鼎的mplayer啦,好东西啊(^.^)。从网上down了个,粗略地搜了把相关的资源,可能是偶搜索技术比较面,没搞到多少有价值的东西,当然这种东西大牛不想写,像我等面人却也不会,呜呼哀哉.......
预备:
随便翻了翻mplayer的代码,貌似比较复杂。再说时间紧迫啊,那就找个软的捏-vlc呗,这个名气没有mplayer大,应该好些吧,窃喜ING。
遂又down了个vlc的代码,看了下关于播放总时间的处理流程,发现相对来简明多了,思想也比较简单....此处省略1W字,呵呵,哪有这么多。无非就是一个简单的减法处理罢了。在自己的方案上按照vlc的方法做了相应的修改,结果可想而知啦,倒是正确了。但发现在mplayer上仍然不对,获取的时间始终不对,怪了....
废话,当然相信mplayer啦,肯定是自己的东西还存在问题,没办法啦,就只有重新操刀,当然是个小刀。
手术:
大致瞧了下她那美丽的轮廓, 不知道美不美,呵呵,欣赏能力有限啊。当然还是把我需要的东西找到了,其实跟我相关性最大的的文件也就demux_mpg.c这个文件罢了,恩,硬着头皮看看。
ps数据的解析流程可以简单表述:demux_mpg_fill_buffer->demux_mpg_read_packet():读取数据,然后分析读取pts->demux_mpg_pes_probe->demux_mpg_probe->demux_mpg_open,在>demux_mpg_open函数中有对ps文件的获取播放总时间的一个处理过程。也是瞄了瞄,没太仔细,发现果然mm的对时间长度的处理比起vlc的确精致了不少,虽然他对偶的文件处理错了,但偶还是更确信mp在应对大量stream文件的处理能力比vlc强了不少。
阅读(429) | 评论(0) | 转发(0) |