找回密码
 注册
查看: 12065|回复: 44

MPlayer-1.0pre7 安装方法(new)

  [复制链接]
发表于 2005-4-18 22:01:15 | 显示全部楼层 |阅读模式
本文参考论坛MPlayer-1.0pre6a的安装手记一文.

1.声明:

安装环境为FC3

爽阿,终于把连放rm的问题解决了,同时修正了很多bug

如果要用mplayer播放流媒体
到live.com 下载流媒体协议支持包,
编译完后将整个目录cp到/ usr/lib下
在编译mplayer的时候, ./configure添加
--enable-live
--with-livelibdir=/usr/lib/live

2.下载:

MPlayer-1.0pre7
http://www4.mplayerhq.hu/MPlayer/releases/MPlayer-1.0pre7.tar.bz2
官方CODES-all
all-20050412.tar.bz2
官方win32_CODES-all
windows-all-20050412.zip
字体
gb2312-ming.tar.bz2
皮肤
Blue-1.4.tar.bz2

以上请到官方主页下载


3. 安装code

tar vjxf all-20050412.tar.bz2
mv all-20050412 /usr/lib/codes
chmod 644 /usr/lib/codes/*
chown root.root /usr/lib/codes/*

unzip windows-all-20050412.zip
mv windows-all-20050412 /usr/lib/wincodes
chmod 644 /usr/lib/wincodes/*
chown root.root /usr/lib/wincodes/*


4.安装MPlayer

tar vjxf MPlayer-1.0pre7.tar.bz2

cd MPlayer-1.0pre7

./configure --prefix=/usr/local/mplayer/ --enable-gui --enable-freetype --with-codecsdir=/usr/lib/codes/ --with-win32libdir=/usr/lib/wincodes/

补充:可以加上--disable-gcc-checking --language=zh_CN

参数说明:
./configure \ #详细说明见./configure --help
--prefix=/usr/local/mplayer/ \ #安装路径
--enable-gui \ #如果你只在命令下用可以不要这个,相信是不会的
--enable-freetype \ #方便以后调整字体(怎么调整这里不说 站里有)
--with-codecsdir=/usr/lib/codes/ \ #我们把下载的插件拷贝到这里
--with-win32libdir=/usr/lib/wincodes/ \ #指定win32代码目录


make

make install

时间较长,有耐心慢慢等吧

cd etc
cp example.conf /usr/local/mplayer/etc/config
cp codecs.conf /usr/local/mplayer/etc/


5.安装字体
tar vjxf gb2312-ming.tar.bz2
mv gb2312-ming /usr/local/mplayer/share/mplayer/font/
cd /usr/local/mplayer/share/mplayer/font/
ln -s gb2312-ming font

6.安装皮肤
tar vjxf Blue-1.4.tar.bz2
mv Blue /usr/local/mplayer/share/mplayer/Skin/
cd /usr/local/mplayer/share/mplayer/Skin/
ln -s Blue default

桌面启动
创建启动器
名称:MPlayer
明令:gmplayer
然后选择一个你喜欢的图标.
也可以在终端用明令gmplayer启动.
发表于 2005-4-18 22:13:53 | 显示全部楼层
其实都一样,不过我就不明白其实 config 、codecs.conf  不是必须的。
为什么所有的安装方法有安装他的步骤?
回复

使用道具 举报

发表于 2005-4-18 23:00:49 | 显示全部楼层
我configure居然检查出
Detected operating system: Linux
Detected host architecture: i386
Checking for cc version ... 3.4.3-20050110, bad
Checking for gcc version ... 3.4.3-20050110, bad
Checking for gcc-3.4 version ... not found
Checking for gcc-3.3 version ... not found
Checking for gcc-3.2 version ... not found
Checking for gcc-3.1 version ... not found
Checking for gcc3 version ... not found
Checking for gcc-3.0 version ... not found
Checking for cc version ... 3.4.3-20050110, bad
晕死!
最后是了--disable-gcc-checking来安装的 :-(
回复

使用道具 举报

发表于 2005-4-19 00:26:13 | 显示全部楼层
安装错误
Detected operating system: Linux
Detected host architecture: i386
Checking for cc version ... 3.3.5, ok
Checking for host cc ... cc
Checking for CPU vendor ... AuthenticAMD (6:8:1)
Checking for CPU type ...  AMD Sempron(tm)   2600+
Checking for GCC & CPU optimization abilities ... athlon-4
Checking for kernel support of mmx ... yes
Checking for kernel support of mmx2 ... yes
Checking for kernel support of 3dnow ... yes
Checking for kernel support of 3dnowex ... yes
Checking for kernel support of sse ... yes
Checking for mtrr support ... yes
Checking for assembler support of -pipe option ... yes
Checking for assembler (as 2.15) ... ok
Checking for Linux kernel version ... 2.6.11-1-k7, ok
Checking for mplayer binary name ... mplayer
Checking for awk ... mawk
Checking for extra headers ... none
Checking for extra libs ... none
Checking for -lposix ... no
Checking for -lm ... yes
Checking for i18n ... yes
Checking for iconv ... yes
Checking for langinfo ... yes
Checking for language ... using en (man pages:  en)
Checking for enable sighandler ... yes
Checking for runtime cpudetection ... no
Checking for restrict keyword ... __restrict
Checking for __builtin_expect ... yes
Checking for kstat ... no
Checking for posix4 ... no
Checking for lrintf ... yes
Checking for nanosleep ... yes
Checking for socklib ... yes (using -lnsl)
Checking for inet_pton() ... yes (using -lnsl)
Checking for inttypes.h (required) ... yes
Checking for int_fastXY_t in inttypes.h ... yes
Checking for word size ... 32
Checking for stddef.h ... yes
Checking for malloc.h ... yes
Checking for memalign() ... yes
Checking for alloca.h ... yes
Checking for mman.h ... yes
Checking for dynamic loader ... yes
Checking for dynamic a/v plugins support ... no
Checking for pthread ... yes (using -lpthread)
Checking for sys/soundcard.h ... yes
Checking for sys/dvdio.h ... no
Checking for sys/cdio.h ... no
Checking for linux/cdrom.h ... yes
Checking for dvd.h ... no
Checking for BSDI dvd.h ... no
Checking for HPUX SCSI header ... no
Checking for userspace SCSI headers (Solaris) ... no
Checking for termcap ... no
Checking for termios ... yes (using sys/termios.h)
Checking for shm ... yes
Checking for linux devfs ... no
Checking for scandir() ... yes
Checking for strsep() ... yes
Checking for strlcpy() ... no
Checking for strlcat() ... no
Checking for fseeko() ... yes
Checking for localtime_r() ... yes
Checking for vsscanf() ... yes
Checking for swab() ... yes
Checking for posix select() ... yes
Checking for gettimeofday() ... yes
Checking for glob() ... yes
Checking for sys/sysinfo.h ... yes
Checking for Mac OS X APIs ... no
Checking for Mac OS X Finder Support ... no
Checking for Mac OS X Bundle file locations ... no
Checking for Samba support (libsmbclient) ... no
Checking for 3dfx ... no
Checking for tdfxfb ... no
Checking for tdfxvid ... no
Checking for tga ... yes
Checking for DirectFB headers presence ... not found
Checking for DirectFB ... no
Checking for X11 headers presence ... yes (using /usr/X11R6/include)
Checking for X11 libs presence ... yes (using /usr/X11R6/lib)
Checking for X11 ... yes
Checking for DPMS ... yes (using Xdpms 4)
Checking for Xv ... yes
Checking for XvMC ... no
Checking for Xinerama ... yes
Checking for Xxf86vm ... yes
Checking for XF86keysym ... yes
Checking for DGA ... yes (using DGA 2.0)
Checking for OpenGL ... no
Checking for /dev/mga_vid ... no
Checking for xmga ... no
Checking for GGI ... no
Checking for AA ... no
Checking for CACA ... no
Checking for SVGAlib ... no
Checking for FBDev ... no
Checking for DVB ... no (specify path to DVB/ost/include with --with-dvbincdir=DIR)
Checking for DVB HEAD ... yes
Checking for PNG support ... no
Checking for JPEG support ... no
Checking for PNM support ... yes
Checking for md5sum support ... yes
Checking for GIF support ... no
Checking for VESA support ... yes
Checking for SDL ... no
Checking for Windows waveout ... no
Checking for Directx ... no
Checking for NAS ... no
Checking for DXR2 ... no
Checking for DXR3/H+ ... no
Checking for libmp1e ... no
Checking for libfame ... no
Checking for OSS Audio ... yes
Checking for aRts ... no
Checking for EsounD ... no
Checking for Polyp ... no
Checking for JACK ... no
Checking for ALSA audio ... no
Checking for Sun audio ... no
Checking for Sun mediaLib ... no
Checking for SGI audio ... no
Checking for VCD support ... ok
Checking for DVD support (libmpdvdkit) ... yes
Checking for DVD support (libdvdread) ... disabled by libmpdvdkit2
Checking for cdparanoia ... no
Checking for freetype >= 2.0.9 ... yes
Checking for fontconfig ... yes
Checking for fribidi with charsets ... no
Checking for ENCA ... no
Checking for zlib ... yes
Checking for RTC ... yes
Checking for external liblzo support ... no
Checking for mad support ... no
Checking for Toolame ... no
Checking for OggVorbis support ... yes (internal Tremor)
Checking for OggTheora support (only the CVS version!) ... no
Checking for mp3lib support ... yes
Checking for liba52 support ... yes
Checking for libdts support ... no
Checking for libmpeg2 support ... yes
Checking for Matroska support ... yes
Checking for internal FAAD2 (AAC) support ... yes
Checking for external FAAD2 (AAC) support ... no
Checking for LADSPA plugin support ... no
Checking for Win32 codec DLL support ... yes (using /usr/lib/win32)
Checking for Win32 loader support ... yes
Checking for DirectShow ... yes
Checking for XAnim DLL ... no (no suitable directory found - see DOCS/HTML/en/codecs.html)
Checking for RealPlayer DLL ... yes (using /usr/lib/win32)
Checking for LIVE.COM Streaming Media libraries ... no
Checking for FFmpeg libavcodec (static) ... yes
Checking for FFmpeg libavformat (static) ... yes
Checking for amr narrowband ... no
Checking for amr narrowband, fixed point ... no
Checking for amr wideband ... no
Checking for libdv-0.9.5+ ... yes
Checking for zr ... no
Checking for bl ... no
Checking for XviD ... yes
Checking for DivX4 compatibility in XviD ... no
Checking for x264 ... no
Checking for DivX4linux/DivX5linux/OpenDivX decore ... DivX5linux (with libdivxdecore.so)
Checking for libmp3lame (for mencoder) ... no
Checking for DivX4linux encore (for mencoder) ... DivX4linux (with libdivxencore.so)
Checking for mencoder ... yes
Checking for fastmemcpy ... yes
Checking for UniquE RAR File Library ... yes
Checking for TV interface ... yes
Checking for EDL support ... yes
Checking for *BSD BrookTree 848 TV interface ... no
Checking for Video 4 Linux TV interface ... no
Checking for Video 4 Linux 2 TV interface ... no
Checking for audio select() ... yes
Checking for network ... yes
Checking for ftp ... yes
Checking for vstream client ... no
Checking for byte order ... little-endian
Checking for shared postprocess lib ... no
Checking for OSD menu ... no
Checking for QTX codecs ... yes
Checking for Subtitles sorting ... yes
Checking for XMMS inputplugin support ... no
Checking for inet6 ... yes
Checking for gethostbyname2 ... yes
Checking for GUI ... yes

Error: PNG support required for GUI compilation, please install libpng and libpng-dev packages.

Check "configure.log" if you do not understand why it failed.
回复

使用道具 举报

发表于 2005-4-19 00:35:29 | 显示全部楼层
已经安装完了,不能连续播放rmvb已经解决了.不过在configure的时候是不是要把--language=zh_CN加上去啊,如果不加是英文的.
可能是心理作用,感觉画面要比以前好一点
回复

使用道具 举报

发表于 2005-4-19 00:49:46 | 显示全部楼层
Error: PNG support required for GUI compilation, please install libpng and libpng-dev packages.
需要先安装libpng和libpng-dev。不加--enable-gui也能编译,没图形界面。
回复

使用道具 举报

发表于 2005-4-19 01:00:41 | 显示全部楼层
安装时没有加 --language=zh_CN 但是安装完毕界面仍然是空白,感觉不是我安装的问题,多谢大虾指点
另外 OGM 文件怎样选择解码,感觉画面比声音慢很多,不同步,请问怎么解决,多谢
回复

使用道具 举报

发表于 2005-4-19 09:21:02 | 显示全部楼层

只回答GGGO
你试试加上不检测 gcc 版本的参数试试/

其他的请查找旧贴。
题问题请开新帖,不要在别人的帖子里提问题。
回复

使用道具 举报

发表于 2005-4-19 12:08:06 | 显示全部楼层
播rmvb播一会儿就整个系统死掉了!!!晕
回复

使用道具 举报

发表于 2005-4-19 12:11:18 | 显示全部楼层
In file included from demux_rtp.cpp:12:
demux_rtp_internal.h:17:24: liveMedia.hh: No such file or directory
In file included from demux_rtp.cpp:12:
demux_rtp_internal.h:22: error: `MediaSubsession' has not been declared
demux_rtp_internal.h:22: error: ISO C++ forbids declaration of `subsession' with no type
demux_rtp_internal.h:24: error: `MediaSubsession' has not been declared
demux_rtp_internal.h:24: error: ISO C++ forbids declaration of `subsession' with no type
demux_rtp_internal.h:33: error: `Boolean' does not name a type
demux_rtp_internal.h:40: error: `Boolean' does not name a type
demux_rtp.cpp:14:36: BasicUsageEnvironment.hh: No such file or directory
demux_rtp.cpp:16:30: GroupsockHelper.hh: No such file or directory
demux_rtp.cpp:54: error: expected `)' before '*' token
demux_rtp.cpp:58: error: ISO C++ forbids declaration of `FramedSource' with no type
demux_rtp.cpp:58: error: expected `;' before '*' token
demux_rtp.cpp:59: error: expected `;' before "RTPSource"
demux_rtp.cpp:59: error: ISO C++ forbids declaration of `RTPSource' with no type
demux_rtp.cpp:59: error: expected `;' before '*' token
demux_rtp.cpp:60: error: expected `;' before "demuxer_t"
demux_rtp.cpp:66: error: `Boolean' does not name a type
demux_rtp.cpp:83: error: ISO C++ forbids declaration of `FramedSource' with no type
demux_rtp.cpp:83: error: expected `;' before '*' token
demux_rtp.cpp:84: error: ISO C++ forbids declaration of `RTPSource' with no type
demux_rtp.cpp:84: error: expected `;' before '*' token
demux_rtp.cpp:93: error: ISO C++ forbids declaration of `RTSPClient' with no type
demux_rtp.cpp:93: error: expected `;' before '*' token
demux_rtp.cpp:94: error: ISO C++ forbids declaration of `SIPClient' with no type
demux_rtp.cpp:94: error: expected `;' before '*' token
demux_rtp.cpp:95: error: ISO C++ forbids declaration of `MediaSession' with no type
demux_rtp.cpp:95: error: expected `;' before '*' token
demux_rtp.cpp:104: error: `RTSPClient' was not declared in this scope
demux_rtp.cpp:104: error: `client' was not declared in this scope
demux_rtp.cpp:104: error: expected primary-expression before "char"
demux_rtp.cpp:104: error: initializer expression list treated as compound expression
demux_rtp.cpp:104: error: expected `,' or `;' before '{' token
demux_rtp.cpp:114: error: `SIPClient' was not declared in this scope
demux_rtp.cpp:114: error: `client' was not declared in this scope
demux_rtp.cpp:114: error: expected primary-expression before "char"
demux_rtp.cpp:114: error: initializer expression list treated as compound expression
demux_rtp.cpp:114: error: expected `,' or `;' before '{' token
demux_rtp.cpp: In function `demuxer_t* demux_open_rtp(demuxer_t*)':
demux_rtp.cpp:128: error: `Boolean' undeclared (first use this function)
demux_rtp.cpp:128: error: (Each undeclared identifier is reported only once for each function it appears in.)
demux_rtp.cpp:128: error: expected `;' before "success"
demux_rtp.cpp:130: error: `TaskScheduler' undeclared (first use this function)
demux_rtp.cpp:130: error: `scheduler' undeclared (first use this function)
demux_rtp.cpp:130: error: `BasicTaskScheduler' has not been declared
demux_rtp.cpp:130: error: `createNew' undeclared (first use this function)
demux_rtp.cpp:132: error: `UsageEnvironment' undeclared (first use this function)
demux_rtp.cpp:132: error: `env' undeclared (first use this function)
demux_rtp.cpp:132: error: `BasicUsageEnvironment' has not been declared
demux_rtp.cpp:135: error: `RTSPClient' undeclared (first use this function)
demux_rtp.cpp:135: error: `rtspClient' undeclared (first use this function)
demux_rtp.cpp:136: error: `SIPClient' undeclared (first use this function)
demux_rtp.cpp:136: error: `sipClient' undeclared (first use this function)
demux_rtp.cpp:151: error: `RTSPClient' has not been declared
demux_rtp.cpp:157: error: `openURL_rtsp' cannot be used as a function
demux_rtp.cpp:160: error: `SIPClient' has not been declared
demux_rtp.cpp:168: error: `openURL_sip' cannot be used as a function
demux_rtp.cpp:179: error: `MediaSession' undeclared (first use this function)
demux_rtp.cpp:179: error: `mediaSession' undeclared (first use this function)
demux_rtp.cpp:179: error: `MediaSession' has not been declared
demux_rtp.cpp:187: error: 'struct RTPState' has no member named 'rtspClient'
demux_rtp.cpp:188: error: 'struct RTPState' has no member named 'sipClient'
demux_rtp.cpp:189: error: 'struct RTPState' has no member named 'mediaSession'
demux_rtp.cpp:196: error: `MediaSubsessionIterator' undeclared (first use this function)
demux_rtp.cpp:196: error: expected `;' before "iter"
demux_rtp.cpp:197: error: `MediaSubsession' undeclared (first use this function)
demux_rtp.cpp:197: error: `subsession' undeclared (first use this function)
demux_rtp.cpp:199: error: `iter' undeclared (first use this function)
demux_rtp.cpp:221: error: `increaseReceiveBufferTo' undeclared (first use this function)
demux_rtp.cpp:229: error: `False' undeclared (first use this function)
demux_rtp.cpp:262: error: `success' undeclared (first use this function)
demux_rtp.cpp:262: error: `True' undeclared (first use this function)
demux_rtp.cpp: At global scope:
demux_rtp.cpp:294: error: `Boolean' has not been declared
demux_rtp.cpp:295: error: ISO C++ forbids declaration of `mustGetNewData' with no type
demux_rtp.cpp: In function `int demux_rtp_fill_buffer(demuxer_t*, demux_stream_t*)':
demux_rtp.cpp:305: error: `False' undeclared (first use this function)
demux_rtp.cpp: At global scope:
demux_rtp.cpp:340: error: `Boolean' does not name a type
demux_rtp.cpp:356: error: `Boolean' does not name a type
demux_rtp.cpp: In function `void demux_close_rtp(demuxer_t*)':
demux_rtp.cpp:396: error: `UsageEnvironment' undeclared (first use this function)
demux_rtp.cpp:396: error: `env' undeclared (first use this function)
demux_rtp.cpp:397: error: `TaskScheduler' undeclared (first use this function)
demux_rtp.cpp:397: error: `scheduler' undeclared (first use this function)
demux_rtp.cpp:398: error: 'struct RTPState' has no member named 'mediaSession'
demux_rtp.cpp:399: error: 'struct RTPState' has no member named 'mediaSession'
demux_rtp.cpp:402: error: `Medium' has not been declared
demux_rtp.cpp:402: error: 'struct RTPState' has no member named 'mediaSession'
demux_rtp.cpp:403: error: `Medium' has not been declared
demux_rtp.cpp:403: error: 'struct RTPState' has no member named 'rtspClient'
demux_rtp.cpp:404: error: `Medium' has not been declared
demux_rtp.cpp:404: error: 'struct RTPState' has no member named 'sipClient'
demux_rtp.cpp: In function `void afterReading(void*, unsigned int, unsigned int, timeval, unsigned int)':
demux_rtp.cpp:437: error: `Boolean' undeclared (first use this function)
demux_rtp.cpp:437: error: expected `;' before "hasBeenSynchronized"
demux_rtp.cpp:439: error: `hasBeenSynchronized' undeclared (first use this function)
demux_rtp.cpp:440: error: 'class ReadBufferQueue' has no member named 'prevPacketWasSynchronized'
demux_rtp.cpp:457: error: 'class ReadBufferQueue' has no member named 'prevPacketWasSynchronized'
demux_rtp.cpp:465: error: 'class ReadBufferQueue' has no member named 'prevPacketWasSynchronized'
demux_rtp.cpp: At global scope:
demux_rtp.cpp:485: error: `Boolean' has not been declared
demux_rtp.cpp:486: error: ISO C++ forbids declaration of `mustGetNewData' with no type
demux_rtp.cpp: In function `demux_packet_t* getBuffer(demuxer_t*, demux_stream_t*, int, float&)':
demux_rtp.cpp:501: error: 'class ReadBufferQueue' has no member named 'readSource'
demux_rtp.cpp:523: error: 'class ReadBufferQueue' has no member named 'readSource'
demux_rtp.cpp:527: error: `TaskScheduler' undeclared (first use this function)
demux_rtp.cpp:528: error: `scheduler' undeclared (first use this function)
demux_rtp.cpp:528: error: 'class ReadBufferQueue' has no member named 'readSource'
demux_rtp.cpp:533: error: 'class ReadBufferQueue' has no member named 'prevPacketWasSynchronized'
demux_rtp.cpp:536: error: 'class ReadBufferQueue' has no member named 'prevPacketWasSynchronized'
demux_rtp.cpp: In function `void teardownRTSPorSIPSession(RTPState*)':
demux_rtp.cpp:552: error: `MediaSession' undeclared (first use this function)
demux_rtp.cpp:552: error: `mediaSession' undeclared (first use this function)
demux_rtp.cpp:552: error: 'struct RTPState' has no member named 'mediaSession'
demux_rtp.cpp:554: error: 'struct RTPState' has no member named 'rtspClient'
demux_rtp.cpp:555: error: `MediaSubsessionIterator' undeclared (first use this function)
demux_rtp.cpp:555: error: expected `;' before "iter"
demux_rtp.cpp:556: error: `MediaSubsession' undeclared (first use this function)
demux_rtp.cpp:556: error: `subsession' undeclared (first use this function)
demux_rtp.cpp:558: error: `iter' undeclared (first use this function)
demux_rtp.cpp:559: error: 'struct RTPState' has no member named 'rtspClient'
demux_rtp.cpp:561: error: 'struct RTPState' has no member named 'sipClient'
demux_rtp.cpp:562: error: 'struct RTPState' has no member named 'sipClient'
demux_rtp.cpp: At global scope:
demux_rtp.cpp:568: error: expected `)' before '*' token
demux_rtp.cpp:568: error: expected `,' or `;' before '*' token
make[1]: *** [demux_rtp.o] Error 1
make[1]: Leaving directory `/home/netwalker/MPlayer-1.0pre7/libmpdemux'

我已经把解开后的live目录cp到/usr/lib下
live下有个livemedia目录,那里面的include有那个hh文件
这个怎么弄?
顺便问问怎么修改使编译器可以查找新的include位置?
回复

使用道具 举报

发表于 2005-4-19 15:36:23 | 显示全部楼层
nethitler, 那个 live.com 应该先安装吧?
你安装了么?
回复

使用道具 举报

发表于 2005-4-19 21:02:01 | 显示全部楼层
是的 还make了 还生成了 liveMedia那个文件夹
回复

使用道具 举报

发表于 2005-4-19 22:06:17 | 显示全部楼层
--with-livelibdir=/usr/lib/live
不好意思 ,加上这个就可以了
它自己不主动找这个头文件
回复

使用道具 举报

发表于 2005-4-20 22:48:11 | 显示全部楼层
mandriva cooker里面已经有了
回复

使用道具 举报

发表于 2005-4-21 09:41:02 | 显示全部楼层
我的mplayer装好拉,但不能起动!
按照楼主的办法(一模一样)的装好后(没有出错信息提示),但是运行不了!
在终端下运行gmplayer,是bash: gmplayer: command not found
直接进文件夹双击运行也没反应,是不是我没装开发工具的原因,还是别的?
rh9
还有我加拉--disable-gcc-checking --language=zh_CN
还有字体,皮肤都装拉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-8-3 07:23 , Processed in 0.042433 second(s), 17 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表