Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1757526
  • 博文数量: 293
  • 博客积分: 10574
  • 博客等级: 上将
  • 技术积分: 5085
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-22 17:00
文章分类

全部博文(293)

文章存档

2011年(27)

2010年(84)

2009年(62)

2008年(120)

我的朋友

分类: LINUX

2009-11-30 18:44:13

本文介绍的Mplayer在线播放的方法,不是指在浏览器中安装Mplayer插件这种方法,而是在命令行中操作,利用Mplayer的可以从Stdin中播放的原理实现的。其原理是利用支持Stdout的下载软件(如Wget和Curl),将文件下载到Stdout中;再用Mplayer从Stdin读取数据并播放。由于所有数据都只临时存在于Stdin/Out中,从而可以做到不用在本地硬盘保存,在线播放影音文件。这个方法可以通用于各种发行版。关于Stdin/Out的更多信息,请在网上查阅,我并不是很清楚。

下面,以使用Wget和Mplayer为例,介绍几种比较常见的在线播放的例子。

1、在线播放rmvb文件

这个是最简单的,因为rmvb文件不牵涉到字幕问题。请先确定你已经安装realcodecs。假设我想看某一电影ftp里的某个rmvb电影,那么命令行格式为:
wget -ftp://username: -O - | mplayer -cache 8192 -

解释一下,wget的参数“-O”是指另存为,后面的“-”就是指输出到StdOut;“|”是管道符,-cache 8192设置mplayer的缓冲区大小为8192K,最后的“-”告诉Mplayer从StdIn读数据。一般来说,流畅播放需要的带宽为60KB/s左右。如果网速飞快的话,Mplayer会自动控制wget降速,以保持缓冲区在49%左右。

2、在线播放avi文件

这种文件一般都有单独的字幕文件。字幕文件是需要下载到本地硬盘的,把字幕文件放到StdIn中是不可以的。字幕一般有两个格式,srt和sub。对于srt字幕,假设存放位置为tmp/movie.srt,则总的命令行格式为
wget -O - | mplayer -cache 8192 -sub tmp/movie.srt -font /usr/share/fonts/simsun.ttf -subcp cp936 -

解释一下,Mplayer的“-sub”指定字幕文件,“-font”指定字幕文件的字体,这里的simsun.ttf对应简体宋体,繁体字幕就换繁体字体文件。“-subcp”指定字幕文件的编码,简体就是cp936,繁体就是big5。

对于sub格式字幕,需要下载movie.sub和movie.idx文件,总的命令行格式为
wget -O - | mplayer -cache 8192 -vobsub movie -

注意,这里“-vobsub”指定sub格式的字幕,后面只需要字幕文件的前缀名,后缀名不要!!“-font”和“-subcp”参数都用不着,因为sub字幕是特殊位图格式,跟字体和编码都没有关系。

一般来说,流畅播放需要的带宽为130KB/s左右。关于加载字幕的问题,可以参见我的另外一篇文章


3、在线听歌

在线听歌也有几种方法,例如听某个ftp服务器某一目录的所有歌,那个格式就是:
wget -O - | mplayer -cache 1000 -
如果某首歌的文件名中有中文,那这首歌就播不了了。这跟wget如何获取列表有关。

有很多音乐网站,也提供在线听歌(比如music.trueice.net),点击播放后,会生成一个列表文件(假设报存在tmp/playlist.m3u),这样就可以让wget读取这个列表文件并下载,格式为:
wget -i tmp/playlist.m3u -O - | mplayer -cache 1000 -

如果这样的网站需要登录后才能播放,也就是需要Cookies(比如music.xjtust.com),那也没关系,命令格式如下:
wget -i tmp/playlist.m3u --load-cookies .mozilla/firefox/default/cookies.txt - O | mplayer -cache 1000 -
这里,“--load-cookies”后面跟的就是Firefox存放Cookies的文件。

还有些网站,必须用Winamp才能播放,XMMS都不行,那也没有问题,命令格式如下:
wget -i tmp/playlist.m3u --load-cookies .mozilla/firefox/default/cookies.txt --user-agent="WinampMPEG/5.0" - O | mplayer -cache 1000 -
这样就会向服务器发送Winamp的播放器标识。

一般来说,流畅播放的带宽为20KB/s左右。

***********************************************
2006年4月27日新增内容:

wget 还有一个参数在连接ftp服务器的时候也很有用,就是“--no-passive-ftp”。顾名思义,不加这个参数就是Passive模式,加上就是Port模式。如果在播放过程中,wget速度变为0了,可以试试加上或者去掉这个参数。

在播放mp3文件列表时,有可能出现wget在下载其中的一个文件,但是mplayer就是不播放它。这是因为由于mplayer默认从文件的扩展名判断其音频解码类型,而可能由于文件名编码的问题,在stdin中找不到相关信息。这样mplayer就可能不知道如何解码而拒绝播放。可以在mplayer 后面增加这样一个参数“-demuxer 17”,强制它按音频格式处理。

使用curl播放的基本命令为:
curl url -o - | mplayer -cache -

注意是curl另存的参数为小写o,但是curl是否支持Cookies以及是否可以设定user-agent没有试过。
 
转自:
 
***********************************************
 
常用操作:
f------------------------全屏与窗口模式转换,直接按f键 就可以
左光标键----------------快退
右光标键----------------快进
9------------------------音量减小
0------------------------音量增大
m------------------------静音开关
空格---------------------暂停/播放

下面是比较全的,从官方网站找的,有兴趣的可以看看
<− 和 −> (左右光标键)------------后退/ 快进 10 秒。
up 和 down(上下光标键)-----------快进/ 后退 1 分。
pgup 和 pgdown(翻页键)---------快进/ 后退 10 分。
[ 和 ]------------------------------------减少/增加当前回放速度 10%。
{ 和 }------------------------------------减半/加倍当前回放速度。
backspace(退格键)-----------------重置正常回放速度.
< 和 >----------------------------------在播放列表中后退/ 快进。
ENTER(回车键)---------------------在播放列表中快进, 甚至越过末尾。
HOME 和 END------------------------下一个/ 前一个父列表中的播放树项。
INS 和 DEL (仅用于 ASX 播放列表)----下一个/ 前一个供选择的源。
p / SPACE------------------------------暂停 (再按取消暂停)。
. --------------------------------步进。按一下暂停回放, 每按一下就播放一帧(直到按其它键取消步进)。
q / ESC----------------------------------停止播放和退出。
+ 和 - -----------------------------------调整音频延迟增加/减少 0.1 秒。
/ 和 * -----------------------------------降低/ 提高音量。
9 和 0 -----------------------------------降低/ 提高音量。
m -----------------------------------静音。
_ (仅用于 MPEG-TS)---------------------循环可用的像轨。
# (仅用于 MPEG 和 Matroska)----------循环可用的音轨。
TAB (仅用于 MPEG-TS)-------------------循环可用的节目。
f ----------------------------------------切换全屏 (也请参见 −fs)。
T ----------------------------------------切换顶置 (也请参见 −ontop)。
w 和 e--------------------------------------降低/ 提高摇移范围。
o ---------------------------------------循环 OSD 状态: 无 / 搜索条 / 搜索条 + 计时器 / 搜索条 + 计时器 + 总时间。
d ---------------------------------------循环丢帧状态: 无 / 跳过显示 / 跳过解码。 (请参见 −framedrop 和 −hardframedrop)。
v --------------------------------------切换显示字幕。
j -------------------------------------循环可用的字幕。
y 和 g-----------------------------------在字幕列表中步进/步退。
F -------------------------------------切换显示 "锁定的字幕"。
a -------------------------------------切换对齐字幕: 上 / 中 / 下。
x 和 z----------------------------------调整字幕延迟增加/减少 0.1 秒。
r 和 t----------------------------------上/下调整字幕位置。
i (仅用于 −edlout 模式)---------------设置 EDL 的开头或末尾并写入指定的文件。
s (仅用于 −vf 截屏)----------------------截屏。
S (仅用于 −vf 截屏)---------------------开始/停止截屏。
I ----------------------------------用 OSD 显示文件名。
! 和 @----------------------------------寻到前一章节/后一章节的开始处。
D (仅用于 −vo xvmc)------------------激活/撤销去交错。


(以下的按键仅适用于硬件加速视频输出(xv, (x)vidix, (x)mga, 等), 软件均衡器(−vf eq or −vf eq2), 或者色调过滤器(−vf hue)。)

1 和 2----------------------------------调整对比度。
3 和 4----------------------------------调整亮度。
5 和 6----------------------------------调整色调。
7 和 8----------------------------------调整饱和度。

(以下的按键仅适用于 quartz or macosx 视频输出驱动。)

command + 0----------------------------------半尺寸。
command + 1----------------------------------原始尺寸。
command + 2----------------------------------双倍尺寸。
command + f----------------------------------切换全屏 (也请参见 −fs)。
command + [ 和 command + ]---------------设置窗口的 alpha。

(以下的按键仅适用于 sdl 视频输出驱动。)

c ----------------------------------切换可用的全屏模式。
n ----------------------------------原始尺寸。

(以下的按键仅适用于多媒体键盘。)

PAUSE----------------------------------暂停。
STOP----------------------------------停止并退出。
PREVIOUS 和 NEXT-------------------后退/ 快进 1 分。

(以下的按键仅适用于已编译支持 GUI 并优先于以前的定义。)

ENTER----------------------------------开始播放。
ESC----------------------------------停止播放。
l ----------------------------------加载文件。
t ----------------------------------加载字幕。
c ----------------------------------打开皮肤浏览器。
p ----------------------------------打开播放列表。
r ----------------------------------打开首选项。

(以下的按键仅适用于已编译支持 TV 或 DVB 的输入并优先于以前的定义。)

h 和 k----------------------------------选择上一个/ 下一个频道。
n ----------------------------------改变制式。
u ----------------------------------改变频道列表。

(以下的按键仅适用于已编译支持 dvdnav: 用于导航菜单)

keypad 8----------------------------------选择上。
keypad 2----------------------------------选择下。
keypad 4----------------------------------选择左。
keypad 6----------------------------------选择右。
keypad 5----------------------------------返回主菜单。
keypad 7----------------------------------返回最近的菜单(先后次序是: 章节->标题->根)。
keypad ENTER----------------------------确定。

鼠标控制

button 3 和 button 4----------------------------------后退/ 快进 1 分。
button 5 和 button 6----------------------------------降低/ 提高音量。

操纵杆

left 和 right----------------------------------后退/ 快进 10 秒。
up 和 down----------------------------------快进/ 后退 1 分。
button 1----------------------------------暂停。
button 2----------------------------------循环 OSD 状态: 无 / 搜索条 / 搜索条 + 计时器 / 搜索条 + 计时器 + 总时间。
button 3 和 button 4----------------------------------降低/ 提高音量。

修改关联:
有时会遇到想默认用mplayer打开某种格式的影音文件,可以在该文件上点右键,选择”属性“->"打开方式”,点选“Mplayer movie player"(前面有黑点就是选上了),然后关闭”属性“对话框就可以了。

相关配置文件及位置:
FILES (文件)

/usr/local/etc/mplayer/mplayer.conf

MPlayer 范围的设置

/usr/local/etc/mplayer/mencoder.conf

MEncoder 范围的设置

~/.mplayer/config

MPlayer 用户设置

~/.mplayer/mencoder.conf

MEncoder 用户设置

~/.mplayer/input.conf

输入绑定 (按键的完整列表请参见 "−input keylist" 的输出)

~/.mplayer/gui.conf

GUI 配置文件

~/.mplayer/gui.pl

GUI 播放列表

~/.mplayer/font/

字体目录 (里面必须有一个 font.desc 文件和带 .RAW 后缀的文件。)

~/.mplayer/DVDkeys/

缓存的 CSS 钥匙

假如播放文件是 /path/to/movie.avi, MPlayer 按以下顺序搜索字幕文件:

/path/to/movie.sub
~/.mplayer/sub/movie.sub
阅读(919) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~