Mplayer另类在线播放影音文件技巧【转】
http://www.linuxsir.org/bbs/showthread.php?t=254467
本文介绍的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左右。关于加载字幕的问题,可以参见我的另外一篇文章
http://www.linuxsir.org/bbs/showthread.php?t=249835
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没有试过。
Mplayer另类在线播放影音文件技巧【转】的更多相关文章
- JavaScript获取mp4文件MIME编码格式,用于判读是否是h.264,解决在线播放只有声音问题
测试网址:https://gpac.github.io/mp4box.js/test/filereader.html js库:mp4box.js 不能在线播放的:audio/mp4; codecs=& ...
- 【ASP.NET 进阶】Flv视频文件在线播放示例
最近要做个播放Flv文件的东东,网上找到一个合适的,效果如下(GIF录制软件不太好,差不多就是这样子,不过在浏览器上很流畅,具体代码可以看源代码): 源代码:FlvVideoSee.zip 问题说明: ...
- 基于Android的在线播放器系统的设计与实现
文章结构: 1 引言 1.1系统的研究背景 现在的时代是互联网的时代,互联网高速发展的同时,无线网络也接入了互联网.社会的各个领域都已经被无线网络渗透.小的比如手机,电脑,电视.大的比如灯光系统,智能 ...
- iOS从零开始学习直播之音频2.后台播放和在线播放
本篇主要讲音频的后台播放和在线播放. 后台播放 上一篇写的工程运行之后程序退至后台,发现运行不了,歌停止了,这显然不行,音乐后台播放是标配啊.今天就来讲一下后台播放. 1.在plist文件里,告诉 ...
- 使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)
前言 为了保证每周一篇的进度,又由于Vitamio新版本没有发布, 决定推迟本地播放的一些功能(截图.视频时间.尺寸等),跳过直接写在线播放部分的章节.从Vitamio的介绍可以看得出,其支持http ...
- 使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)
前言 本章将实现非常实用的功能——下载在线视频.涉及到多线程.线程更新UI等技术,还需思考产品的设计,如何将新加的功能更好的融入到现有的产品中,并不是简单的加一个界面就行了,欢迎大家交流产品设计和技术 ...
- Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试 by:授客 QQ:1033553122 目的 实现基于http协议的流媒体在线视频播放,服务器性能测试脚本,模拟用户浏览器方式在线播放 ...
- Http Live Streaming 实现iphone在线播放视频[转]
http://hi.baidu.com/lphack/item/83865611c5f82c8988a956df 本人新手,难免会出错,请各位指点! 最近要做一个项目,是通过iphone来播放工厂摄像 ...
- video.js播放mp4文件
HTML5的标签 video 支持的mp4编码为视频编码 H.264 音频AAC 参考网址 http://www.w3school.com.cn/html5/html_5_video.asp 视频格式 ...
随机推荐
- 「Luogu P2015」二叉苹果树 解题报告
题面 一个二叉树,边数为n\((2<n\le 100)\),每条边有一个权值,求剪枝后剩下p\((1<p<n)\)条边,使p条边的权值和最大 还看不懂?-- 2 5 input:5 ...
- Theia APIs——Preferences
上一篇:Theia APIs——命令和快捷键 Preferences Theia有一个preference service,模块可以通过它来获取preference的值,提供默认的preference ...
- jSignature签字板保存为图片
这是本人的第一篇博客,还不会使用.有些简陋,勿怪! 今天要讲的是使用jquery插件jSignature做一个手写板签字的功能,并将签字笔迹保存为图片. 第一步:环境准备 jquery.jSignat ...
- maven中scope标签各个值的意义
在使用maven配置时,有时候会见到scope这个标签,但是总是记不住他们所对应的含义,现在整理一下,以后忘记了再来查看. 版权声明:本文为CSDN博主「MrZhangBaby」的原创文章,遵循 CC ...
- ASP.NET Core 启用跨域请求
本文翻译整理自:https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1 一 .Cross-Orig ...
- CF1200D White Lines | 前缀和
传送门 Examples input 1 4 2 BWWW WBBW WBBW WWWB output 1 4 input 2 3 1 BWB WWB BWB output 2 2 input 3 5 ...
- Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件
本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import ...
- Scala与Mongodb实践3-----运算环境的搭建
目的:使的在IDEA中编辑代码,令代码实现mongodb运算,且转换较为便捷 由实验2可知,运算环境的搭建亦需要对数据进行存储和计算,故需要实现类型转换,所以在实验2的基础上搭建环境. 由菜鸟教程可得 ...
- 为WPF, UWP 及 Xamarin实现一个简单的消息组件
原文地址:Implementing a simple messenger component for WPF, UWP and Xamarin 欢迎大家关注我的公众号:程序员在新西兰了解新西兰IT行业 ...
- 2次方的期望dp
某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个com ...