為什麼在arm上面用mplayer來撥放mp3 會那麼慢且播放訊息很奇怪?

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

為什麼在arm上面用mplayer來撥放mp3 會那麼慢且播放訊息很奇怪?

文章wjb_wu » 週二 8月 22, 2006 7:56 pm

各位大大
小弟最近要在arm上面用mplayer來撥放mp3
但因為只要撥mp3
所以我已將許多的codec關掉
現在是使用ffmpeg的codec來播mp3
但播放的時候卻發現音質非常的糟糕
好像每一秒鐘被放慢了10幾秒來播放
下面的讀秒訊息顯示的也非常的奇怪
請問各位大大
我有那裡做錯了嗎?

MPlayer 1.0pre7-3.3.2 (C) 2000-2005 MPlayer Team
CPU: ARM

Playing /root/Documents/audio/mpeg/Trumpet-12345-loop.mp3.
Audio file detected.
==========================================================================
Requested audio codec family [mp3] (afm=mp3lib) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
apm_set_power_state index=0x1 mode=0x1
AUDIO: 44100 Hz, 2 ch, s16le, 40.0 kbit/2.83% (ratio: 5000->176400)
Selected audio codec: [ffmp3] afm:ffmpeg (FFmpeg MPEG layer-3 audio decoder)
==========================================================================
go to main.
Checking audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
AF_pre: 44100Hz/2ch/s16le
AO: [oss] 44100Hz 2ch s16le (2 bps)
new_srate=44100
ao_data->samplerate=44100
Building audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
Video: no video
Starting playback...
0.0 (00.0) ??,?%
0.3 (00.3) ??,?%
0.3 (00.3) ??,?%
0.3 (00.3) ??,?%
0.3 (00.3) ??,?%
0.3 (00.3) ??,?%
0.3 (00.3) 19.8%
0.3 (00.3) 19.9%
0.3 (00.3) 19.9%
0.3 (00.3) 20.1%
0.3 (00.3) 20.2%
0.3 (00.3) 19.4%
0.3 (00.3) 19.5%
0.3 (00.3) 19.6%
0.3 (00.3) 19.6%
0.3 (00.3) 19.7%
0.4 (00.3) 19.7%
0.7 (00.7) 19.8%
0.7 (00.7) 19.8%
0.7 (00.7) 19.8%
0.7 (00.7) 19.3%
0.7 (00.7) 19.3%
0.7 (00.7) 19.3%
0.7 (00.7) 19.4%
0.7 (00.7) 19.4%


我所使用的configure的指令為:
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv4l-linux --enable-static --prefix=/home/wjbwu/MPlayer-1.0pre7/lib --disable-win32 --disable-dvdread --disable-fbdev --disable-live --disable-dshow --disable-qtx --disable-xanim --disable-real --disable-xvid --disable-x264 --disable-divx4linux --disable-opendivx --disable-internal-tremor --disable-vorbis --disable-internal-matroska --disable-internal-faad --disable-ladspa --disable-libdv --disable-mad --disable-rtc --disable-toolame --disable-mp3lib --disable-liba52 --disable-libmpeg2 --disable-amr_nb --disable-amr_nb-fixed --disable-amr_wb --disable-opendivx --disable-gif --disable-png --disable-jpeg --disable-liblzo --disable-opendivx --disable-libfame --disable-external-tremor --disable-theora --disable-external-faad --disable-xmms --disable-macosx --disable-macosx-finder-support --disable-macosx-bundle --disable-inet6 --disable-ftp --disable-vstream --disable-gethostbyname2 --disable-enca --disable-sortsub --disable-unrarlib --disable-fontconfig --disable-freetype --disable-cdparanoia --disable-mpdvdkit --disable-dvdread --disable-smb --disable-network --disable-winsock2 --disable-rtc --disable-edl --disable-tv-bsdbt848 --disable-tv-v4l2 --disable-tv-v4l --disable-tv --disable-xf86keysym --disable-vm --disable-joystick --disable-lircc --disable-langinfo --disable-vidix --disable-gl --disable-dga --disable-vesa --disable-svga --disable-sdl --disable-aa --disable-caca --disable-ggi --disable-directx --disable-dxr2 --disable-dxr3 --disable-dvb --disable-dvbhead --disable-mga --disable-xmga --disable-xv --disable-xvmc --disable-vm --disable-xinerama --disable-x11 --disable-mlib --disable-3dfx --disable-tdfxfb --disable-directfb --disable-zr --disable-bl --disable-tdfxvid --disable-tga --disable-pnm --disable-md5sum 2>&1 | tee logfile

我有試過把libmad給compiler進去
但播出來的效果一樣很慢很糟
請有經驗的大大教教我吧~~
謝謝... :-)
wjb_wu
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週二 8月 22, 2006 7:37 pm

文章cyt » 週三 8月 23, 2006 2:24 pm

你用的是哪一顆 ARM SoC?
cyt
懵懂的國中生
懵懂的國中生
 
文章: 137
註冊時間: 週一 5月 31, 2004 2:20 pm

文章wjb_wu » 週三 8月 23, 2006 3:48 pm

我所使用的是ARM926EJ-S~~
wjb_wu
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週二 8月 22, 2006 7:37 pm

文章dyg1980 » 週三 9月 27, 2006 3:10 pm

可能是解码器的问题,我也碰到过,你下载MAD的源代码,自己编译生成
libmad.a ,然后configure 时加上--enable-mad ,重新编译就可以了。记得把libmad.a mad.h 加到合适的路径下。播放是加上 -ac mad 参数即可!
dyg1980
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週三 9月 27, 2006 3:03 pm

文章dyg1980 » 週三 9月 27, 2006 3:14 pm

如果你加了MAD的库,那就是你播放时的参数问题,加上 -ac mad 应该是没问题了
dyg1980
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週三 9月 27, 2006 3:03 pm

文章dyg1980 » 週三 9月 27, 2006 3:14 pm

good luck!
dyg1980
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週三 9月 27, 2006 3:03 pm

文章lexue » 週二 10月 10, 2006 1:38 pm

mp3lib用的是浮点运算, ARM926EJ-S没有浮点协处理器, 你需要修改mp3lib算法, 将浮点运算更改为定点运算
lexue
 

請教LIBMAD

文章www83207 » 週四 2月 08, 2007 8:36 pm

我移植MPLAYER在ARM中,但是沒有聲音,要怎麼把LIBMAD加到MPLAYER中,可以請前輩教導我嗎?
www83207
可愛的小學生
可愛的小學生
 
文章: 5
註冊時間: 週四 2月 08, 2007 8:34 pm

文章ernestkidd » 週五 2月 06, 2009 11:44 am

因為 mplayer 預設播 mp3 是用 mp3lib
而 mp3lib 有用到浮點的運算
因此在 arm 上面會跑不動

所以要用另外一個 libmad
mad 是用定點計算小數
在 arm 上就跑得動
2410 實測 ok

而要怎麼把 libmad 編進 mplayer 呢

1. cross complier libmad
取得 /lib/mad.h
和 /include/libmad.a 及 /include/libmad.la

2. 將取得的 libmad 檔案
複製到 arm-linux-gcc 相對應的目錄中

3. configure 加入 --enable-mad

4. make

5. mplayer -ac mad ./file.mp3
努力的跟 Linux 做好朋友
ernestkidd
可愛的小學生
可愛的小學生
 
文章: 11
註冊時間: 週一 12月 24, 2007 10:31 am


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客