Mplayer在linux下安装
1. 开发环境:
red hat 5
内核2.6.18
Gcc –v 4.1.2
2. Mplayer资源包: http://www.mplayerhq.hu/MPlayer/releases/
下载source,codecs,skins以及font文件(注意source与codecs要同版本,即开发日期):
MPlayer-1.0rc1.tar.bz2 # source
essential-20061022.tar.bz2 #codecs
windows-all-20061022.zip # codecs
Blue-1.7.tar.bz2 #skin
gb2312-ming.tar.bz2 #font
下载live555流媒体库:http://www.live555.com/liveMedia/public/live555-latest.tar.gz
3. 在linux下安装:
1) 编译live555库:
# tar zxvf live555-latest.tar.gz
# mv live /usr/local/lib/
# cd live
#./genMakefiles linux
# make
2) 解压 codecs
# tar jxvf essential-20061022.tar.bz2
# mv essential-20061022 /usr/local/lib/codecs
# unzip windows-all-20061022.zip
# mv windows-all-20061022 /usr/local/lib/wincodecs
3) 编译MPlayer-1.0rc1
# tar jxvf MPlayer-1.0rc1.tar.bz2
# cd MPlayer-1.0rc1
# ./configure --prefix=/usr/local/mplayer --enable-gui --enable-live --enable-menu --enable-largefiles --language=zh_CN --with-codecsdir=/usr/local/lib/codecs --with-win32libdir=/usr/local/lib/wincodecs --with-livelibdir=/usr/local/lib/live
# make
# make install
安装完成后,执行文件在/usr/local/mplayer/bin 中
注意:./configure参数分析如下
重要参数说明:
--prefix= 安装路径为/usr/local/mplayer
--enable-gui 使用图形界面,mplayer有命令行和图形界面两种运行方式
--enable-live 使用流媒体支持
--enable-largefiles 使用大文件支持
--language=zh_CN mplayer界面的格式为中文
--with-codecsdir=/usr/local/lib/codecs 指定解码器搜索路径
--with-win32libdir=/usr/local/lib/codecs 指定win32解码器搜索路径
--with-livelibdir=/usr/local/lib/live 指定live解码器搜索路径
4) 安装skin和font
注意:MPlayer默认的skin是在../default 目录下的。
# tar jxvf Ater-1.2.tar.bz2
# mv Ater-1.2/* /usr/local/mplayer/share/mplayer/skin/default/
安装font:
# tar jvxf gb2312-ming.tar.bz2
# cd gb2312-ming/gbsn00lp16/
# cp * /usr/local/mplayer/share/mplayer/font/
5) 运行mplayer/gmplayer
使用MPlayer 时,在终端输入mplayer 是文本界面播放器,gmplayer 打开图形界面。
Mplayer移植到ARM9上
由于MPlayer中默认的mp3解码器是mp3lib,使用的是浮点数运算,相当占用CPU 资源,故在编译的时候可以使用libmad 进行音频输出,使用之前需要自己手动编译libmad,保证交叉编译器能够找到libmad库以及头文件,编译时增加--enable-mad就可以了。利用mad解码mp3文件,可以看到CPU占用率降低到了20%左右。
(1).交叉编译libmad (arm-linux-gcc 3.3.2)
下载libmad包(libmad-0.15.1b.tar.gz)
网址:http://www.linuxfromscratch.org/blfs/view/6.1/multimedia/libmad.html
http://sourceforge.net/project/showfiles.php?group_id=12349
将其解压后,进入libmad的目录,输入配置命令:
./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/3.3.2/lib
make
make install
这样就可以看到在/usr/local/arm/3.3.2/lib 目录下多了include 和lib 目录,
这些就是libmad相关的库文件。
(2)交叉编译MPlayer-1.0rc1 (arm-linux-gcc 3.3.2)
./configure --cc=arm-linux-gcc --host-cc=gcc --enable-cross-compile --target=arm-armv4l-linux --enable-linux-devfs --disable-win32 --disable-dvdread --enable-fbdev --disable-mencoder --enable-libavcodec --disable-liba52 --enable-mp3lib --enable-static --disable-live --disable-armv5te --disable-iconv --charset=noconv --enable-mad --enable-ossaudio --with-extraincdir=/usr/local/arm/3.3.2/arm-linux/sys-include/:/usr/local/arm/3.3.2/lib/include --with-extralibdir=/usr/local/arm/3.3.2/arm-linux/lib:/usr/local/arm/3.3.2/lib/lib
make
注:在交叉编译MPlayer-1.0rc1时,由于redhat 5 的gcc版本太高,编译会出现错误.但编译MPlayer-1.0rc2时,不会出现错误.所以,本人在redhat 9下编译MPlayer-1.0rc1.
利用NFS,挂载到目标机上.
以下为测试结果:
1)在FS2410上
./mplayer –nosound /home/menony/happy.avi 视频顺利播放,声音没
./mplayer /home/menony/happy.avi 视频卡,声音没
./mplayer –ac mad /home/menony/happy.avi 视频顺利播放,声音没,听说是音频驱动问题.
./mplayer –ac mad /home/menony/happy.avi 根据<MPlayer研究报告>修改libao/ao_oss.c内容后测试, 视频卡,声音没
2)在mini2440(友善)
能够解决FS2410的问题
./mplayer –ac mad /home/menony/happy.avi 视频顺利播放,声音可以.很好.
3)pxa270(亿道实验箱,实验室)
./mplayer –nosound /home/menony/happy.avi 视频很卡,声音没
./madplay /home/menony/love.mp3 只播放mp3都很慢.
这个问题原因现在不知道.内核是2.6的.
下面在移植mplayer时添加对流媒体live的支持(redhat 9下)
(确保export PATH=/usr/local/arm/3.3.2/bin:$PATH)
1.交叉编译live555.(先删掉支持mplayer在PC上运行的live)
tar zxvf live555-latest.tar.gz
cd live
vim config.armlinux
修改如下:
CROSS_COMPILE= arm-linux-
LINK = $(CROSS_COMPILE)g++ -o
LIBRARY_LINK = $(CROSS_COMPILE)ld –o
LIBRARY_LINK_OPTS = $(LINK_OPTS) –r –Bstatic
保存后退出
./genMakefiles armlinux
Make
2.交叉编译mplayer
./configure --cc=arm-linux-gcc --host-cc=gcc --enable-cross-compile --target=arm-armv4l-linux --enable-linux-devfs --disable-win32 --disable-dvdread --enable-fbdev --disable-mencoder --enable-libavcodec --disable-liba52 --disable-mp3lib --enable-static --enable-live --disable-armv5te --disable-iconv --charset=noconv --enable-mad --enable-ossaudio --with-livelibdir=/usr/local/lib/live --with-extraincdir=/usr/local/arm/3.3.2/arm-linux/sys-include/:/usr/local/arm/3.3.2/lib/include --with-extralibdir=/usr/local/arm/3.3.2/arm-linux/lib:/usr/local/arm/3.3.2/lib/lib
make
使用nfs挂载测试mplayer
在终端上测试移植到ARM9的mplayer(已经支持live555)
命令:./mplayer rtsp://192.168.1.103/sample_100kbit.mp4
效果和在PC上运行一样.但mp3也不行.
注:编译好的mplayer在redhat 5 /home/save/1_27下.
1. 在redhat 9下交叉编译live555(/usr/local/lib/live),交叉编译libmad(/usr/local/arm/3.3.2/lib/).
最后交叉编译mplayer(/home/mpl ayer/)
2. 先在redhat 9下编译mplayer,再共享到redhat 5.因为DSS服务器安装在redhat 5下.
有待解决问题:
1. mp3无法播放.在PC上和在FS2410上使用流媒体播放形式都播放不了.
2. 在使用流媒体播放视频时,只能播放(3gp、mp4、mov)格式.如果使用mplayer播放本地文件.avi是可以的.但rtsp时不可以.这就需要把.avi格式转换成.mp4格式.即使用Xvid编码器制作MPEG-4压缩视频.
3. FS2410在使用mplayer播放音频时,还不可以.和音频驱动有关.在友善mini2440时,音频是没有问题的.
4. 移植到ARM9的mplayer还没有皮肤,所以应该使用QT4制作界面.虽然QT4所占空间大,
但功能强大,对以后工作有帮助.
5. 在PC机linux下的流媒体服务器(Darwin Streaming Server(DSS)或live555 media server)是网上的源代码.所以,有能力,要自己动手写一个流媒体服务器(RTSP.RTP.RTCP协议)
6. 由于在测试过程中都是使用NFS挂载mplayer.在后期应该做成文件系统,一起烧写到指flash上
mencoder
把.avi转为.mp4
在/usr/local/mplayer/bin下,
./mencoder -of mpeg –vf scale=320:240 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500 -oac copy /home/menony/happy.avi -o /usr/local/movies/happy.mp4
测试: ./mplayer /usr/local/movies/happy.mp4 能正常
参数说明:
# -vf scale=320:240,调整视频尺寸到320x240;
# -oac copy,指定音频编码器,copy是指不压缩,直接使用源文件里的音频。copy换成 MP3lame,即压缩成mp3。
# -ovc lavc,指定视频编码器,使用libavcodec编码器;
# -lavcopts vcodec=mpeg4:vbitrate=500,指定libavcodec的参数,vcodec=mpeg4指使用mpeg4压缩,就是DivX,vbitrate=500指500kbps的比特率。
测试:./mplayer rtsp://192.168.1.103/happy.mp4出错,播放不了.错误如下:
librtsp: server responds: 'RTSP/1.0 415 Unsupported Media Type'
rtsp_session: unsupported RTSP server. Server type is 'DSS/5.5.5 (Build/489.16; Platform/Linux; Release/Darwin; state/beta; )'.
STREAM_LIVE555, URL: rtsp://192.168.1.103/happy.mpg
Stream not seekable!
检测到 文件格式。
Failed to get a SDP description from URL "rtsp://192.168.1.103/happy.mpg": cannot handle DESCRIBE response: RTSP/1.0 415 Unsupported Media Type
分析:DSS是没问题的.出现的错误和下面测试结果一样.应该是和流媒体格式有关.
测试:./mplayer rtsp://192.168.1.103/happy.avi出错,播放不了,错误如上.
如何将自己的视频转换为流媒体格式?
研究这个东西费了我好大的劲,一开始不知道视频还有专门针对流媒体的,以为只要用
MediaCoder 将视频转换成合适的格式,如:MPEG4 + AAC + MP4 / MPEG4 + AAC +
3GP 就可以放了,反复放到服务器上面去测试,VLC 和 QuickTime 都没法打开。于是
又用工具打开 DSS 自带的几个示例视频看它们的格式,反复转换试不同的视频和音频编
码和外壳,还是不行...郁闷死我了
在 DSS 的邮件列表里面找了找相关的文章,发现有讲好像要用特别的工具对视频
hint一下,然后就可以在 RTSP 上面用了,说可以用 QuickTime Pro 或 VLC 来转换,我用 VLC 试了一下,文件菜单一个叫“流(s)”的功能,但试了还是不行,没看到文件有变动过。
于是再沿着 Hint 关键词在 Google 上面找文章,找到了 Nokia 论坛里面,看到这
篇文章:http://discussion.forum.nokia.com/forum/showthread.php?t=125540 里面有说可以使用 Mp4box 对视频进行 hint
于是我在 http://www.videohelp.com/tools/mp4box 这里下载到了mp4box
(不用下载GUI的,直接用命令行操作就好了,只用一条命名)
下载到到解压出后会有个叫 mp4box.exe ,用它在命令行下面运行
C:/Program Files/Darwin Streaming Server/Movies>mp4box mymovie.mp4 -hint
出现结果:
Hinting file with Path-MTU 1450 Bytes
Hinting track ID 201 - Type "mp4v:mp4v" (MP4V-ES) - BW 33 kbps
Hinting track ID 101 - Type "mp4a:mp4a" (mpeg4-generic) - BW 64 kbps
Saving mymovie.mp4: 0.500 secs Interleaving
流媒体视频就转换好了,现在文件大小就会有变动,变大了一些。
然后,再用 VLC 或 QuickTime 打开 rtsp://127.0.0.1:554/mymovie.mp4 试
试能否播放吧!如果你有3G手机,可以直接用手机打开这个地址试一下。
linux 下 mp4box 安装 (没有实现,编译错误,要安装包)
===========================================================
作者: joy129(http://joy129.itpub.net)
发表于: 2009.06.26 10:42
分类: Linux应用
出处: http://joy129.itpub.net/post/39024/486505
---------------------------------------------------------------
yum -y install freeglut
yum -y install freeglut-devel
wget http://downloads.sourceforge.net/gpac/gpac-0.4.5.tar.gz
wget http://downloads.sourceforge.net/gpac/gpac_extra_libs-0.4.5.tar.gz
tar zxvf gpac-0.4.5.tar.gz
tar zxvf gpac_extra_libs-0.4.5.tar.gz
cd gpac
cp -r ../gpac_extra_libs/* extra_lib/
chmod +x configure
./configure
make lib
make apps
make install
cp bin/gcc/libgpac.so /usr/lib
再安装完MP4Box之后同样要执行一次ldconfig命令,然后执行MP4Box -version命令后可以看到如下内容
# MP4Box -version |
这样一来所有的工作就都做完了,剩下的就是按照自己的需要写ffmpeg的转码脚本了
问题解决:
在安装MP4Box的时候可能会出现下面的问题
/usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL/usr/bin/ld: cannot find -lGLcollect2: ld returned 1 exit statusmake[1]: *** [libgpac.so] Error 1make[1]: Leaving directory `/root/gpac/src’make: *** [lib] Error 2
原因是mesa-libGL-devel这个包可能不完整,直接使用yum -y install mesa-libGL-devel命令把这个包安装一下,然后在make的时候就正常了
1 .由于mp4box在linux安装出现问题.所以我下载一个在windows下运行的mp4box.exe(目录: E:/FS2410/Linux/MP4Box-v0.4.6-dev_20091013).
2. 由于mp4box在转换.mp4为流媒体格式时,其用的编码库是xvid. 因此如果用mplayer中的mencoder编码时,要使用xvid编码库.用mencoder自身的 lavc (libavcodec)时会出错,无法识别.
3.所以要添加xvidcore到mplayer中,否则编码时无法识别.解决如下节
xvidcore-1.1.3安装(xvid对视频进行MPEG编码)
tar xvfz xvidcore-1.1.3.tar.gz
cd xvidcore-1.1.3.tar.gz
cd build/generic
./configure –prefix=/usr/local/lib
make
make install
在/usr/local/lib目录下出现include、lib。
重新编译mplayer-1.0rc1,添加对xvid的支持。确保这时的live库是在PC上编译,不是交叉编译的。
./configure --prefix=/usr/local/mplayer --enable-gui --enable-xvid --enable-live --enable-menu --enable-largefiles --language=zh_CN --with-codecsdir=/usr/local/lib/codecs --with-win32libdir=/usr/local/lib/wincodecs --with-livelibdir=/usr/local/lib/live --with-xvidlibdir=/usr/local/lib/lib/
make
make install
使用xvid编码.avi成.mp4格式:
cd /usr/local/mplayer/bin
./mencoder -of mpeg -vf scale=240:320 -ovc xvid -xvidencopts bitrate=500
-oac copy /home/menony/happy.avi -o /usr/local/movies/2.mp
虽然是用xvid编码转换的。但在windows下,使用mp4box.exe来-hint时,同样无法
识别。不知什么原因。