DSP

mplayer播放问题汇集

2019-07-13 17:05发布

Q:我能播放某些AVI文件但是我听不到声音并且有这种出错信息:
Detected audio codec: [divx] afm:4 (DivX audio (WMA))
Requested audio codec family [divx] (afm=4) not available (enable it at
compile time!)
A:可能文件的音频使用了一个不是MPlayer本地支持的解码器。按照README或者 安装部分中的说明安装Win32解码器包。   Q:...avifile/aviplay能工作但MPlayer不能。 A:MPlayer不是avifile。它们之间唯一的共同之处Win32 DLL装载器。codecs(DLL)集,同步,信号分离等等完全不同所以不应该被比较。如果什么东西能用aviplay播放并不意味着MPlayer能工作,反之亦然。   Q:播放AVI文件时音频不同步。 A:试试-bps-nobps选项。如果还没有改善,阅读 这个并把文件上载到FTP上。   Q:MPlayer在使用l3codeca.acm的时候因为一些错误而退出。 A:检查ldd /usr/local/bin/mplayer的输出。如果它包含
    libc.so.6 => /lib/libc.so.6 (0x4???????)
"?"可以是任意数字表示没有问题,错误不在这里。如果它是:
    libc.so.6 => /lib/libc.so.6 (0x00??????)
那就表示你的内核/libc有问题。可能你使用了一些安全补丁(例如Solar Designer的OpenWall补丁)强迫把库加载到很低的内存地址。因为l3codeca.acm是不可重新定位的DLL,它必须被加载到0x00400000,我们没法改变它。你应该使用没有打补丁的核心,或者使用MPlayer的-afm 1选项禁用l3codeca.acm。
  Q:我的电脑播放分辨率640x300而且是立体声的mp3的M$ DivX AVI文件时非常慢。当我使用-nosound选项时,一切正常(但没有声音)。 A:你的机器太慢或者你的声卡驱动坏了。查阅文档看你是否能提高性能。   Q:MPlayer由于"MPlayer interrupted by signal 4 in module: decode_video"而崩溃。 A:尝试在你用来编译MPlayer的机器上运行它。或者重新编译打开运行时CPU检测功能(./configure --enable-runtime-cpudetection)。如果没有使用上面提到的特性,不要在与编译它不同的CPU上使用MPlayer。   Q:我有个关于[your window manager]跟xv/xmga/sdl/x11模式下全屏的问题... A:读取我们的bug报告指导并送一个正确的bug报告给我们   Q:我播放MPEG文件时出现这样的错误: Can't find codec for video format 0x10000001! A:你的~/.mplayer/下的codecs.conf的版本太旧。用/etc/下面的文件升级它。
或者你的配置文件中包含vc=选项或者类似东西。
  Q:当KDE下的运行MPlayer我只看到一个黑 {MOD}的屏幕什么都没有。在大约一分钟之后才开始播放视频。 A:KDE的arts守护进程会阻塞声卡设备。你可以一直等到视频开始或者在控制中心中禁用arts。如果你想使用arts的音频,将音频输出指定为我们本地的arts音频驱动-ao arts)。如果它失败或者没有被编译进来,尝试SDL (-ao sdl)并且确保你的SDL能处理arts的音频。还有另一个选择是用artsdsp运行MPlayer。   Q:我有一个AVI文件,当用-vc odivx播放时时,出现灰 {MOD}屏幕,用-vc divx4时,出现绿 {MOD}屏幕。 A:这不是DivX文件,而是M$ MPEG4v3。更新你的codecs.conf。   Q:我播放电影时遇到视频音频不同步和/或者MPlayer崩溃并出现下列信息:
DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
A:这可能有很多原因。
  • 你的CPU和/或者显卡和/或者总线太慢。在这种情况下MPlayer会显示信息(并且掉帧数会迅速增加)。
  • 如果它是AVI文件,也许它的交错有问题。试试-ni选项。
  • 你的声卡驱动太buggy,或者你对ALSA 0.5使用了-ao oss。 参见声卡部分
  • AVI的文件头有问题,试试-nobps选项,和/或者-mc 0
  Q:我有个MJPEG文件能用其它播放器播放但是MPlayer只显示一个黑 {MOD}的图象。 A:在codecs.conf中禁用Windows DLL,或者使用-vc ffmjpeg选项(为此你需要为MPlayer编译libavcodec支持)。   Q:当我试图从我的电视选台器截取时,它能工作,但是颜 {MOD}很奇怪。用其它程序没问题。 A:你的卡片有可能错误报告了它的 {MOD}彩空间容量。试试YUY2而不是缺省的YV12(见电视输入文档)。   Q:每次我开始播放是,都遇到这种信息,但一切似乎都正常:
Linux RTC init: ioctl (rtc_pie_on): Permission denied
A:你需要root权限或者一个特殊设定的内核使用计时器代码。细节参见文档的RTC部分   Q:我的同步有问题。一些AVI我能正常播放,另外一些却是以双倍速度播放! A:你的声卡/驱动buggy。很有可能它的固定在44100Hz,而你试图播放22050Hz的音频的文件。试试resample音频滤镜。   Q:我播放所有WMV (或者其它.. )文件时都只有一个绿 {MOD}/灰 {MOD}的窗口和声音! MPlayer报告:
Detected video codec: [null] drv:0 (NULL codec (no decoding))
A:更新你codecs.conf   Q:我用我的笔记本播放文件时得到十分奇怪的CPU百分值(太大了)。 A:这是你的笔记本的电源管理/节能系统(BIOS,不是内核)的影响。起动你的笔记本之前插上外部电源。你也可以试试cpufreq(一个Linux下的SpeedStep界面)对你是否有帮助。   Q:当我以root权限在我的笔记本上运行MPlayer时,音频与视频完全不同步。当我作为普通用户运行它时,它工作正常。 A:这还是电源管理的结果(见上面)。起动你的笔记本之前插上外部电源或者使用-nortc选项。   Q: 放一部电影的时候它突然跳跃起来并且出现下列信息:
Badly interleaved AVI file detected - switching to -ni mode...
A: 糟糕的交错文件不能和-cache选项协同工作. 试试-nocache.  

5.4 视频与音频驱动问题(vo/ao)

Q:我播放视频的时候没有声音并且得到类似这样的出错信息:
AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
audio_setup: Can't open audio device /dev/dsp: Device or resource busy
couldn't open/init audio device -> NOSOUND
Audio: no sound!!!
Start playing...
A:你是运行的KDE或者GNOME,并且起动了ARTS或者ESD音频守护进程吗? 试试禁用音频守护进程,或者使用-ao arts-ao esd选项让MPlayer使用ARTS或ESD。   Q:DGA驱动怎么了? 我找不到它! A:./configure会自动检测你的DGA驱动。如果-vo help没有显示DGA,那你的X装的有问题。尝试./configure --enable-dga并且读取相关文档。或者,使用-vo sdl:dga 选项试试SDL的DGA驱动。   Q:很好,-vo help显示有DGA驱动,但是它抱怨权限。帮帮我! A:它只能以root权限工作! 这是DGA的限制。你应该成为root(su -),然后再试一次。另一个解决方法是为 MPlayerSUID root,但是这种方法不被推荐!
    chown root /usr/local/bin/mplayer
    chmod 755 /usr/local/bin/mplayer
    chmod +s /usr/local/bin/mplayer
警告:安全风险
这是一个很大的安全风险!永远不要在除了你之外还有人可以使用的服务器上这样做,因为他们能通过SUID root的 MPlayer获得root权限。你被警告过了。
  Q:当使用Xvideo时,我的Voodoo 3/Banshee报告说:
X Error of failed request: BadAccess (attempt to access private resource denied)
  Major opcode of failed request: 147 (MIT-SHM)
  Minor opcode of failed request: 1 (X_ShmAttach)
  Serial number of failed request: 26
  Current serial number in output stream:27
A:XFree86 4.0.2/4.0.3的“tdfx”驱动有这个bug。已经被解决了bugfix #621 of the XFree86 4.1.0 CVS log。因此,升级到XFree86 4.1.0或者更新的版本。或者,要么是从DRI的主页下载(至少)0.6版本的DRI,要么使用CVS的DRI。   Q:OpenGL(-vo gl)输出不工作(锁死/黑 {MOD}窗口/X11出错/...)。 A:你的OpenGL驱动不支持动态材质更换(glTexSubImage)。已知的是它在nVidia的二进制的家伙上不工作。同时也知道它在Utah-GLX/DRI 和Matrox G400显卡上能工作。Radeon显卡加DRI也行。其它显卡加DRI不行。它同样不能在3DFX显卡上工作,因为256x256材质大小限制。   Q:我有一块nVidia TNT/TNT2显卡,而我的电影的下面总有一个颜 {MOD}奇怪的带子! 这个是什么故障? A:这是nVidia二进制X驱动的一个bug。这些bug仅出现在TNT/TNT2显卡上,我们什么也干不了。要解决问题,升级到最新版本的nVidia二进制的驱动。如果仍然不行,对nVidia抱怨去吧!   Q:我使用nVidia XYZ显卡,当我单击显示GUI的显示窗口来触发GUI面板时,在我单击的地方出现一个黑 {MOD}方块。我安装了最新的驱动。 A:没错,nVidia修正了上一个的错误(上面),并且引进了新的bug。让我们祝贺他们。更新:据nVidia说,这已经修正了。   Q:当我使用GUI时,如果使用SDL视频输出,会创建第二个视频窗口。 A:知道,目前GUI不能使用SDL。   Q:啊世界真是残酷...! SDL只有x11输出,而不是xv A:再试一次x11输出。现在尝试-vo x11 -fs -zoom。看到区别了?没有?!好,给你点启发:SDL的x11 输出只要xv可用就会使用xv,你不必为它担心...注意:你使用-forcexv-noxv强制/禁用SDL使用xv  

5.5 DVD播放

Q: 有没有DVD导航菜单?
A: MPlayer中的dvdnav支持目前坏了,但正常的播放可以工作。如果你想要华丽的菜单,你需要使用别的播放器比如xine或者Ogle。如果你确实想要DVD导航,送一个补丁.
 
Q:当播放DVD时,我遇到这个错误:
mplayer: ifo_read.c:1143: ifoRead_C_ADT_internal: Assertion nfo_length / sizeof(cell_adr_t) >= c_adt->nr_of_vobs' failed.
A:这是已知的libdvdread 0.9.1/0.9.2的bug。使用libmpdvdkit2,就在MPlayer的源代码中,并且缺省使用
 
Q:我能在我的Solaris下的可爱的SPARC上编译libdvdread和libdvdcss吗?
A:天知道...据说它能工作,所以请测试它并且提供反馈。也参阅libdvdread的文件及其主页。我们不是libdvdread的作者。使用libmpdvdkit2,就在MPlayer的源代码中,并且缺省使用。
 
Q:字幕怎么样? MPlayer能显示他们吗?
A:是。参见文档的DVD部分。
 
Q:我怎么设置我的DVD光驱的地区代码? 我没有Windows!
A:使用regionset工具
 
Q:我一定需要(setuid) root/setuid fibmap_mplayer来播放DVD吗?
A:不,这个只用于老式的DVD支持。然而你必须有访问DVD设备适当权限(在/dev/里)。
 
Q:我在什么地方能找到libdvdread和libdvdcss包?
A:你不需要。使用libmpdvdkit2,就在MPlayer的源代码中,并且缺省使用。这些包能从Ogle的站点得到。
 
Q:可以单独播放/编码选定的chapter吗?
A:可以,试试-chapter选项。
 
Q:我的DVD回放慢的要死!
A:使用-cache选项(在man page中介绍)并尝试用hdparm工具为了DVD光驱开启DMA(在文档CD部分有介绍)。
 

5.6 特性要求

Q:如果MPlayer暂停之后我试图搜索或者按任意键,MPlayer会停止暂停。我愿意能够在暂停时在电影中搜索。
A:很难在不失去A/V同步的情况下实现这项功能。迄今为止所有尝试都失败了,但补丁是受欢迎的。
 
Q:我想要+/- 1帧来搜索而不是10秒。
A:这不会被实现。它曾被实现过,但是它弄乱了A/V同步。如果你愿意就实现它,并且发送补丁。不要要求它。
 
Q:哪里有Windows版本?
A:它没有发行,并且将来也不会。看看Windows的情况(开源的ASF分析器,开源的ASF编码器等等)然后你就知道为什么了。我们不想进监狱。顺便说一下,你可以自己编译它,在Cygwin下。
 

5.7 编码

Q:我怎么编码?
A:读取MEncoder的文档
 
Q:我怎么创建VCD?
A:试试TOOLS目录下的mencvcd脚本。使用它你能把DVD或者其它电影编码成为VCD或者SVCD格式甚至直接把它们刻到CD上。
 
Q: 我怎么合并两个视频文件?
A: 这在mplayer-users上面是永不完结的话题。检索邮件文档来寻找完整的答案。这是个复杂的问题,而且你的操作可能因为你想要合并的文件种类有很大分别。MPEG可以直接连接成一个文件。对于AVI有两个可用的工具avidemux和avimerge(transcode工具集的一部分),可能可以完成这个工作。如果两个文件使用同样的分辨率和编解码器,你也可用试试MEncoder。尝试
    cat file1 file2 > file3
    mencoder -ovc copy -oac copy -o out.avi -forceidx file3.avi
 
Q:我的电视选台器工作,我能用MPlayer听到声音观看视频,但是MEncoder不把音频编码!
A:Linux的电视音频编码目前还没有实现,我们正在努力。目前它只在BSD上工作。
 
Q:我不能把DVD字幕编码成AVI!
A:你必须正确设定-sid选项!
 
Q:MEncoder启动时出现segfaults!
A:升级DivX4Linux。
 
Q:我如何仅对一张DVD中选定的chapter进行编码?
A:正确使用-chapter选项,像这样: -chapter 5-7
 
Q:我试图在VFAT文件系统上处理2GB+的文件。能行吗?
A:不,VFAT不支持2GB+的文件。
 
Q:为什么MEncoder显示的推荐比特率都是负的?
A:因为你编码的音频的比特率太大,在任何CD上不能用于电影。检查你是否正确安装了libmp3lame。