+ -
当前位置:首页 → 问答吧 → 编译mpaler svn已添加opencor-amr支持仍然无法播放amr文件

编译mpaler svn已添加opencor-amr支持仍然无法播放amr文件

时间:2010-02-24

来源:互联网

郁闷了,编译了几次。已经安装了 opencore-amr,而且PKGBUILD中也添加了:
PHP 代码:
--enable-libopencore_amrnb --enable-libopencore_amrwb 
参数支持,编译也成功,但安装mplayer后还是无法播放amr文件

以下是播放amr文件的输出:
PHP 代码:
MPlayer SVN-r30725-4.4.3 (C) 2000-2010 MPlayer Team
138 audio & 287 video codecs

Playing record.amr.
Seek failed
libavformat file format detected.
[amr @ 0x94a1590]max_analyze_duration reached
[amr @ 0x94a1590]Estimating duration from bitrate, this may be inaccurate
[lavf] Audio stream found, -aid 0
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
Cannot find codec 'libamr_nb' in libavcodec...
ADecoder init failed :(
ADecoder init failed :(
Cannot find codec for audio format 0x726D6173.
Audio: no sound
Video: no video


Exiting... (End of file) 
大家帮看看哪儿有问题

作者: Innuendo   发布时间: 2010-02-24

顶一下                字数补丁

作者: Innuendo   发布时间: 2010-02-25

我的mplayer可以播放amr文件,用的是最新的mplayer for windows的code,这个code包比发行版自带的那个要全,播放amr没有问题

作者: jiangkero   发布时间: 2010-02-27

引用:
作者: jiangkero
我的mplayer可以播放amr文件,用的是最新的mplayer for windows的code,这个code包比发行版自带的那个要全,播放amr没有问题
请问具体是什么codec?能否把你播放amr文件时的输出贴一下。我的mplayer一直是自己编译的,加了n多参数,对付常用视频、音频都没什么问题,不过没安装那个codecs包。

作者: Innuendo   发布时间: 2010-02-27

一直使用libamr。如无特殊需求,仅仅只为播放,还是推荐libamr。

amrnb、amrwb编译十分简单,而且已为mplayer的configure默认参数。

作者: redalert2map   发布时间: 2010-02-27

libamr已经被废止了,编译无此参数了,现在只支持 opencore-amr

作者: Innuendo   发布时间: 2010-02-27

只要安装了opencore-amr...
mplayer就会自己把amr支持编译进去

MPlayer SVN-r30725-4.4.3 (C) 2000-2010 MPlayer Team
149 audio & 335 video codecs

Playing Sound clip.amr.
libavformat file format detected.
[amr @ 0xa2dd560]max_analyze_duration reached
[amr @ 0xa2dd560]Estimating duration from bitrate, this may be inaccurate
[lavf] Audio stream found, -aid 0
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 8000 Hz, 1 ch, s16le, 0.0 kbit/0.00% (ratio: 0->16000)
Selected audio codec: [ffamrnb] afm: ffmpeg (AMR Narrowband)
==========================================================================
AO: [alsa] 48000Hz 1ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 60.8 (01:00.7) of 0.0 (unknown) 0.8%

Exiting... (End of file)

作者: zhong   发布时间: 2010-02-28

SVN 30725
./configure --help 节选(太长了,只贴相关的),也是搜索amr的结果:
PHP 代码:
--disable-libopencore_amrnb disable libopencore_amr narrowband [autodetect]
--disable-libopencore_amrwb disable libopencore_amr wideband [autodetect] 
再把我的PKGBUILD贴上来吧:
PHP 代码:
# $Id$
# Maintainer: Hugo Doria <[email protected]>

pkgname=mplayer
pkgver=30725
pkgrel=1
pkgdesc="A movie player for linux"
arch=('i686' 'x86_64')
depends=('libxxf86dga' 'opencore-amr' 'libxv')
makedepends=('subversion')
license=('GPL')
url="http://www.mplayerhq.hu/"
source=()
md5sums=()

_svnmod="mplayer"
_svntrunk=svn://svn.mplayerhq.hu/mplayer/trunk/

build() {
  cd $srcdir
  if [ -d $_svnmod/.svn ]; then
    cd $_svnmod
    svn up -r $pkgver
  else
    svn co $_svntrunk --config-dir . -r $pkgver $_svnmod
  fi
  msg "SVN checkout done or server timeout"

  cd $srcdir
  cp -r $_svnmod $_svnmod-build
  cd $_svnmod-build

  msg "Building the package..."
  unset CFLAGS LDFLAGS
  # Custom CFLAGS break the mplayer build
  #unset CFLAGS

  # Needed to compile using gcc 4.4.0 
  #patch -p0 < ${srcdir}/liba52_gcc_bug.patch || return 1 

  #cd ${srcdir}/${pkgname}

  ./configure --prefix=/usr --confdir=/etc/mplayer --enable-runtime-cpudetection   
    --disable-mencoder --disable-gl --disable-smb  --disable-dvdnav 
    --enable-debug=3 --extra-cflags=-fno-strict-aliasing 
    --enable-libopencore_amrnb --enable-libopencore_amrwb 
    --disable-lirc --disable-lircc 
    --disable-tv --disable-tv-v4l1 --disable-tv-v4l2 --disable-radio-v4l2 --disable-radio-bsdbt848 
    --disable-tv-bsdbt848 --disable-cddb --disable-inet6 
    --disable-joystick --disable-theora 
    --disable-cdparanoia --disable-live 
    --disable-fribidi  --disable-ossaudio  --disable-arts  --disable-esd 
    --disable-openal --disable-jack  --disable-pulse 
    --disable-vidix --disable-vidix-pcidb 
    --disable-dhahelper --disable-svgalib_helper 
    --disable-dga2 --disable-dga1 
    --disable-vesa --disable-svga 
    --disable-sdl --disable-aa  --disable-caca 
    --disable-ggi --disable-ggiwmh 
    --disable-directx --disable-faac 
    --disable-dxr2 --disable-dxr3 
    --disable-ivtv  --disable-v4l2 
    --disable-dvb --disable-dvbhead 
    --disable-mga --disable-xmga 
    --disable-vm --disable-xinerama  --disable-xshape 
    --disable-xss  --disable-fbdev  --disable-directfb 
    --disable-zr --disable-tga  --disable-pnm 
    --disable-md5sum --disable-yuv4mpeg 
    --disable-gif  --disable-png  --disable-mng  --disable-jpeg 
    --disable-libcdio  --disable-liblzo 
    --disable-xvid --disable-x264 
    --disable-tremor --disable-libvorbis  --disable-speex 
    --disable-ladspa --disable-libdv --disable-mad 
    --disable-mp3lame  --disable-toolame  --disable-twolame 
    --disable-libdca  --disable-nemesi  || return 1

  #[ "$CARCH" = "i686" ] &&  sed 's|-march=i486|-march=i686|g' -i config.mak

  make || return 1
  make -j1 DESTDIR=${pkgdir} install || return 1
  install -Dm644 etc/{codecs.conf,input.conf,example.conf} ${pkgdir}/etc/mplayer/ || return 1
 # install -dm755 ${pkgdir}/usr/share/mplayer/
 # ln -s /usr/share/fonts/TTF/DejaVuSans.ttf ${pkgdir}/usr/share/mplayer/subfont.ttf || return 1
 # rm -rf ${pkgdir}/usr/share/mplayer/font

作者: Innuendo   发布时间: 2010-02-28

既然在configure中默认为【autodetect】或【enable】,就应该在编译时去掉此项参数。

作者: redalert2map   发布时间: 2010-02-28

引用:
作者: Innuendo
请问具体是什么codec?能否把你播放amr文件时的输出贴一下。我的mplayer一直是自己编译的,加了n多参数,对付常用视频、音频都没什么问题,不过没安装那个codecs包。
这是我用mplayer播放amr文件时候的输出:
$ mplayer Fergie_-_Labels_Or_Love.amr
MPlayer SVN-r30526-4.4.3 (C) 2000-2010 MPlayer Team
142 audio & 332 video codecs
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing Fergie_-_Labels_Or_Love.amr.
Cache fill: 0.00% (0 bytes)
libavformat file format detected.
[amr @ 0x99951a0]max_analyze_duration reached
[amr @ 0x99951a0]Estimating duration from bitrate, this may be inaccurate
[lavf] Audio stream found, -aid 0
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 8000 Hz, 1 ch, s16le, 0.0 kbit/0.00% (ratio: 0->16000)
Selected audio codec: [ffamrnb] afm: ffmpeg (AMR Narrowband)
==========================================================================
AO: [alsa] 48000Hz 1ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 12.7 (12.7) of 0.0 (unknown) 1.5% 0%

MPlayer interrupted by signal 2 in module: enable_cache


MPlayer interrupted by signal 2 in module: play_audio
A: 12.7 (12.7) of 0.0 (unknown) 1.5% 0%

我说的那个code就是wincode32那个,但是我用的是mplayer for windows 里面的,直接用win里的code覆盖/usr/lib/codecs,win里的比linux的多了30多个dll文件,我不知道这样对不对,但是播放3gp和amr文件确实用这个方法解决了

作者: jiangkero   发布时间: 2010-03-01

找到原因了,原来是 ~/.mplayer/codecs.conf 的问题,都是n久前的配置文件,是说明明是opencore-amr 了怎么还是在调用 libamr,现在把这个过时的 codecs.conf 删除了就OK了。还是感谢楼上几位热情给予建议的朋友。

作者: Innuendo   发布时间: 2010-03-01