|

楼主 |
发表于 2004-1-5 16:48:31
|
显示全部楼层
问题已经解决,如果大家有相同问题可以参考我的解决方法:
用 mplayer,从cvs上checkout的最新版本,安装realplay9先,然后用root编译mplayer,
$configure --with-reallibdir=/root/Real/Codecs;make;make install
完成后应该可以播放正常的rmvb了。
对于不正常的rmvb有两种处理方法:
1) 改rmvb文件,把不正常的改正常.
一般出问题主要是因为rmvb文件头部分的格式不正确,导致mplayer无法识别,所以可以尝试简单的替换掉前面的一部分。
2)hack souce code:
如果你有很多问题rmvb,一个文件一个文件的去改十分烦琐,因此最好的办法是修改source code,以我的为例。
我下载的rmvb是因为头部有四个字节的偏移,所以导致mplayer读取参数出错,于是我就简单的把出错部分做个判断,把位置调正确。修改过程如下:
文件: main/libmpdemux/demux_real.c
修改:
找到函数
- void demux_open_real(demuxer_t* demuxer)
复制代码
在代码
- num_of_headers = stream_read_dword(demuxer->stream);
复制代码
后面加上
- /*
- * It's just a hack,maybe not right,but can work for some
- * cases.you should change something for your rmvb files.
- */
- #define stream_backchar(s,i) if(s->buf_pos<s->buf_len) s->buf_pos -= i;
- if(num_of_headers > 255)
- {
- stream_backchar(demuxer->stream,6);
- num_of_headers = stream_read_dword(demuxer->stream);
- }
复制代码
在main目录下,
$rm -f mplayer;rm -f libmpdemux/libmpdemux.a;make
$./mplayer 你的rmvb文件 |
|