让mplayer支持cue的可行性Linux认证考试

文章作者 100test 发表时间 2010:05:09 20:55:56
来源 100Test.Com百考试题网


  之前发现Amarok支持cue文件的时候,感动得泪流满面。后来慢慢因为其各种大小缺陷,最终决定回归mplayer。但是回归之后用不了cue又是个心病,于是开始这篇蛋疼的分析。

  假如把mplayer当作后端,那么支持cue是很容易的。前端解析cue之后,播放每个音轨可以用以下命令:

  mplayer -ss start_time -endpos duration_time file

  (两个time的格式都是[[hh:]mm:]ss[.ms])

  现在我主要分析mplayer自身支持cue的可行性。

  首先发现mplayer有一个选项:mplayer cue://file[:track] [options]

  我以为它可以支持cue,使用之后发现不行。但这个选项的存在激发了我尝试在mplayer中完整支持cue的冲动。

  查看mplayer代码stream/stream_cue.c才发现其对cue的支持相当有限。首先,它完全是为了支持VCD的bin /cue或img/cue文件而写的,流类型也定义为STREAMTYPE_VCDBINCUE了。其次,它要求cue文件里FILE必须写在第一行。另外,像TITLE、PERFORMER这类信息会被忽略。

  FILE的问题好解决,主要的问题是如何让它播放wav、flac等文件中的track。

  先看看stream_cue.c是如何实现的。调试后发现,mplayer是从 open_s函数进入该模块的,于是分析如下:

  int open_s(stream_t *stream,int mode, void* opts, int* file_format)

  {

  检查参数正确性:

  mode必须是STREAM_READ。

  opts实际上是个内部结构,仅包含filename这个域,在这里判断filename非空。

  检查filename中是否用


相关文章


简单讲述必学的Linux命令之nslookupLinux认证考试
Linux命令网络操作之ifconfigLinux认证考试
Linux下杀僵尸进程办法Linux认证考试
通过PXE远程安装多台Linux系统Linux认证考试
让mplayer支持cue的可行性Linux认证考试
保存export出来的环境变量Linux认证考试
shell与export命令Linux认证考试
五十几道RHCE参考笔试试题Linux认证考试
Linux认证复习题100道含答案Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛