mplayer编程模式控制命令

slave模式协议
-------------------

关于slave模式,MPlayer为后台运行其他程序。不再截获键盘事件,MPlayer会从标准输入读一个换行符(/n)分隔开的命令。

要动手尝试slave模式,运行

  mplayer -slave -quiet <movie>

并在控制台窗口输入slave命令。

您也可以使用一个fifo文件(命名管道):

  mkfifo /tmp/fifofile
  mplayer -slave -input file=/tmp/fifofile <movie>

大多数slave模式命令相当于命令行选项,但并非一定要在相同的名称。详细说明中可以在手册中找到

所有命令都可以以“pausing”,“pausing_keep”,或“pausing_toggle”为前缀。“pausing”告诉MPlayer暂停正在处理的命令。 “pausing_keep”告诉MPlayer暂停保持只要它已在暂停模式。“pausing_toggle”告诉MPlayer暂停保持只要它尚未暂停模式。请注意,“尽可能“可以在命令完全执行之前。
作为一项临时黑客,也有个实验性“pausing_keep_force”前缀,与之MPlayer不退出了所有的暂停循环。
这样你能避免“frame stepping”由于“pausing_keep”的影响。但大多数命令将要么不执行或是按照令人意外的方式。
对于“set_mouse_pos”和“key_down_event”,“pausing_keep_force”是默认
因为其他值不为他们作出多大的意义。

各种提示和技巧(帮助扩展!):

- 尝试使用例如
    pausing_keep_force pt_step 1
    get_property pause
  切换到下一个文件。它避免在转换到新的音频文件之前旧文件播放一小段时间

可用的命令('mplayer -input cmdlist的'会打印出一份清单):

注意,因为Mplayer是通过换行符("/n")来分隔不同的命令,所以我们在编程中不管是写入到管道文件还是写入到QT的进程中在命令后面一定要加入换行符("/n"),这样Mplayer才能辨别。

还有一点我们要通过给Mplayer发送多个命令来获取到当前视频播放的信息,如何来获取到这些信息呢?

在我们通过管道或进程的标准输入通道给Mplayer发送命令,如“get_video_resolution”(注意是下划线),Mplayer就会响应,会在标准输出中输出视频的分辨率如:ANS_VIDEO_RESOLUTION='352x288',所以为了获得影片的分辨率,我们还需要将获取到的信息进行解析,取到352x288.其他的信息获取方法也是差不多的。

alt_src_step <value> (ASX playlist only)
    当有一个以上的源可以有选择下一个/前一个。

audio_delay <value> [abs]
    设置/调整音频延迟。
    如果[abs]不提供或为零,调整迟延<value>秒。
    如果[abs]不为零,将延迟到<value>秒。

[brightness|contrast|gamma|hue|saturation] <value> [abs]
    设置/调整视频参数。
    如果[abs]不提供或为零,修改参数为<value>。
    如果[abs]不为零,参数设置为<value>。
    <value>的范围是[-100,100]。

change_rectangle <val1> <val2>
    更改矩形滤波器矩形的坐标。
        <val1>
            必须是下列之一:
                0 =宽度
                1 =高度
                2 = x坐标
                3 = y坐标
        <val2>
            如果<val1>为0或1:
                整数加/减去宽/高。
                正值宽度/高度和负值减去它。
            如果<val1>是2或3:
                相对矩形左上角的整数值。正值移动矩形向右/向下和负值移动矩形向左/向上。

dvb_set_channel <channel_number> <card_number>
    设置的DVB通道。

dvdnav <button_name>
     给定dvdnav按钮。
        up
        down
        left
        right
        menu
        select
        prev
        mouse

edl_mark
    将当前位置写入EDL文件。

frame_drop [value]
    切换/设置帧的模式。

get_audio_bitrate
    打印出当前文件音频比特率。

get_audio_codec
    打印出的音频当前文件的编解码器的名称。

get_audio_samples
    打印出的音频和当前文件的声道数。

get_file_name
    打印出当前文件名。

get_meta_album
    打印出当前文件的'专辑'的元数据。

get_meta_artist
    打印出当前文件的'艺术家'的元数据。

get_meta_comment
    打印出当前文件的'评论'的元数据。

get_meta_genre
    打印出当前文件的'流派'的元数据。

get_meta_title
    打印出当前文件的'标题'的元数据。

get_meta_track
    打印出当前文件的'音轨的数量'的元数据。

get_meta_year
    打印出当前文件的'年份'的元数据。

get_percent_pos
    打印出文件中的当前位置为整数百分比[0-100)。

get_property <property>
    打印出的属性的当前值。

get_sub_visibility
    打印出字幕能见度(1 ==开启,0 ==关闭)。

get_time_length
    打印出当前文件的长度用秒表示。

get_time_pos
    打印出在文件的当前位置用秒表示,采用浮点数。

get_vo_fullscreen
    全屏状态打印出来(1 == 全屏,0 ==窗口)。

get_video_bitrate
    打印出当前文件的视频比特率。

get_video_codec
    打印出当前视频文件的编解码器的名称。

get_video_resolution
    打印出当前文件的视频分辨率。

screenshot <value>
    截屏。要求屏幕过滤器加载。
        0以一个单独的截图。
        1启动/停止服用,每帧画面。

gui_[about|loadfile|loadsubtitle|play|playlist|preferences|skinbrowser|stop]
    图形用户界面行动

key_down_event <value>
    注入<value>到MPlayer的关键代码的事件。

loadfile <file|url> <append>
    加载给定的文件/网址,停止当前文件的播放/网址。
    如果是<append>非零继续播放和文件/网址
    追加到当前播放列表代替。

loadlist <file> <append>
    加载给定的播放列表文件,停止当前文件的播放。
    如果<append>是非零和继续播放文件,文件追加到当前播放列表。

loop <value> [abs]
    调整/设置怎样的电影应该是循环多次。 -1代表不循环,永远的0。

菜单命令>
    执行上显示OSD菜单命令。
        up 移动光标向上。
        down 移动光标向下。
        ok 接受的选择。
        cancel 取消选择。
        hide 隐藏的OSD菜单。

set_menu <menu_name>
    显示菜单命名<menu_name>。

mute [value]
    切换声音输出静音或将其设置为[value](value>=0)
    (1 ==开启,0 ==关闭)。

osd [level]
    切换OSD模式或将其设置为[level]在[level]>= 0。

osd_show_property_text <string> [duration] [level]
    显示一项关于OSD扩展属性的字符串,看到-playing-msg 用于描述可用的扩展。如果[duration]>=0,显示为[duration]ms。 [level]设置所需的最低水平OSD该消息可见(默认是:0 -始终显示)。

osd_show_text <string> [duration] [level]
    查看OSD的<string>。

panscan <-1.0 - 1.0> | <0.0 - 1.0> <abs>
    增加或减少pan-and-scan的<value>的范围,1.0是最高的。
    负值降低pan-and-scan范围。
    如果<abs>!= 0,那么pan-and-scan范围被解释为绝对的范围。

pause
    暂停/取消暂停播放。

frame_step
    播放一帧,然后暂停。

pt_step <value> [force]
    转到下一个/上的播放树项。标志的<value>讲述
    该方向。如果没有项目可在给定的方向不会做任何事,除非[force]不为零。

pt_up_step <value>[force]
    类似pt_step,但跳转到下一个/父列表中的前一个项目。
    有助于摆脱在播放树内部循环。

quit [value]
    退出MPlayer。可选的整数[value]的值作为返回代码
    为mplayer的进程(默认值:0)。

radio_set_channel <channel>
    切换到<channel>。在‘channel’的广播参数需要设置。

radio_set_freq <frequency in MHz>
    设置广播频率调谐器。

radio_step_channel <-1|1>
    步向前(1)或向后(-1频道列表)。只有当'channel'的广播参数设置。

radio_step_freq <value>
    调整频率的<value>(正数 - 向上,负数 - 向下)。

seek <value> [type]
    定位电影的某些地方。
        0 是一个相对定位+/- <value>(默认值)。
        1 是定位<value>%在电影里。
        2 是寻求一个绝对位置的<value>秒。

seek_chapter <value> [type]
    定位一章的开始。
        0 是一个相对寻求+/- <value>章节(默认)。
        1 定位到<value>章。

switch_angle <value>
    转换ID为角度[value]。通过循环如果用角度[value]省略或负数。

set_mouse_pos<X> <y>
    告诉MPlayer的窗口中鼠标坐标。
    此命令不移动鼠标!

set_property <property> <value>
    设置属性。

speed_incr <value>
    增加<value>当前回放速度。

speed_mult <value>
    目前速度乘以<value>。

speed_set <value>
    设定速度为<value>。

step_property <property> [value] [direction]
    通过value来改变属性,或者,如果没给定或为0则增加默认值。如果小于零,方向是相反的方向。

stop
    停止播放。

sub_alignment [value]
    切换/设置对齐字幕。
        0 顶部对齐
        1 居中对齐
        2 底部对齐

sub_delay <value> [abs]
    调整了字幕延迟+/- <value>秒或将其设置<value>
    秒时[abs]不为零。

sub_load <subtitle_file>
    从<subtitle_file>加载字幕。

sub_log
    当前日志上显示的字幕或连同文件名和时间信息的〜/.mplayer/subtitle_log。

sub_pos <value> [abs]
    调整/设置字幕的位置。

sub_remove [value]
    如果[value]参数是当前和非负,并取消了字幕文件的[value]索引。如果参数省略或负,除去
    所有的字幕文件。

sub_select [value]
    显示字幕的索引[value]。关闭字幕显示,如果关闭[value]的值为-1或比更高可用的字幕指数更大。
    可用的字幕周期,如果[value]省略或低于-1。支持字幕来源是 -sub 选项在命令行,VOBsubs,DVD字幕和Ogg和Matroska文本流。
    这主要是循环所有字幕命令,如果要设置一个特定的字幕,使用sub_file,sub_vob,或sub_demux。

sub_source [source]
    显示第一个字幕,从[source]。这里[source]是一个整数:
    SUB_SOURCE_SUBS(0)用于文件字幕
    SUB_SOURCE_VOBSUB(1) VOBSub文件
    SUB_SOURCE_DEMUX(2)在媒体文件或DVD嵌入字幕。
    如果[source]为-1,将关闭字幕显示。如果[source]低于-1,将循环每个之间的现有资源第一个字幕。

sub_file [value]
    显示字幕specifid由[value]的文件subs。在[value]的值
    通过相应的ID_FILE_SUB_ID'-identify'报告的值。
    如果[value]的值-1,将关闭字幕显示。如果[value]小于-1,
    将循环的所有文件subs。

sub_vob [value]
    显示字幕specifid由[value]的vobsubs。在[value]的值
    通过相应的ID_VOBSUB_ID'-identify'报告的值。
    如果[value]的值-1,将关闭字幕显示。如果[value]小于-1,
    将循环的所有vobsubs。

sub_demux [value]
    显示字幕specifid由[value]从DVD字幕或嵌入在媒体文件。在[value]的值对应ID_SUBTITLE_ID值'-identify',。如果[value]的值-1,将关闭字幕显示。
    如果[value]小于-1,将循环所有的DVD字幕或嵌入字幕。

sub_scale <value> [abs]
    调整字幕大小+/- <value>或将其设置为<value>时,[abs]
    不为零。

vobsub_lang
    这是与sub_select为了向后兼容。

sub_step<value>
    在字幕列表前进<value>步,如果<value>
    是为负,倒退<value>步。

sub_visibility [value]
    切换/设置字幕。

forced_subs_only [value]
    强制切换/设置字幕。

switch_audio [value](目前的MPEG*,AVI,的Matroska和libav库处理流)
    切换到音频文件通过ID[value]。循环
    歌曲,如果[value]省略或负数。

switch_angle [value](DVD光盘只)
    切换到DVD的角度通过ID[value]。循环
    如果可用角度,如果[value]省略或负数。

switch_ratio [value]
    在运行时改变长宽比。 [value]是表示新的长宽比
    作为浮动16 / 9(例如1.77778)。
    这可能与某些视频过滤器的问题。

switch_title [value](DVDNAV only)
    切换到DVD标题通过ID[value]。循环可用标题,如果[value]的值省略或负数。

switch_vsync [value]
    切换场同步(1 ==开启,0 ==关闭)。如果[value]的值没有提供,刷新同步状态反转。

teletext_add_digit <value>
    进入/离开字幕的页面号编辑模式,并追加提供的以前输入的数字。
    0 .. 9 - 附加apropriate数字。 (启用编辑模式,如果从一般要求模式,并切换到正常模式时。)
      -     - 删除最后的页码数字。 (退格仿真,只能在页码编辑模式。)

teletext_go_link <1-6>
    按照目前的字幕的页面给出链接。

tv_start_scan
    电视频道开始自动扫描。

tv_step_channel <channel>
    选择下一个/上一个电视频道。

tv_step_norm
    更改电视制式。

tv_step_chanlist
    改变频道列表。

tv_set_channel <channel>
    设置当前的电视频道。

tv_last_channel
    设置当前电视频道到最后一个。

tv_set_freq <frequency in MHz>
    设置电视调谐器的频率。

tv_step_freq <frequency offset in MHz>
    设置电视调谐器的频率相对于当前值。

tv_set_norm <norm>
    电视调谐器设置规范(包括PAL,SECAM,NTSC制式,...).

tv_set_brightness <-100 - 100> [abs]
    设置电视调谐器的亮度或调整,如[abs]设置为0。

tv_set_contrast <-100 -100> [abs]
    设置电视调谐器的对比或调整,如[abs]设置为0。

tv_set_hue <-100 - 100> [abs]
    设置电视调谐器色调或调整,如[abs]设置为0。

tv_set_saturation <-100 - 100> [abs]
    设置电视调谐器饱和或调整,如[abs]设置为0。

use_master
    主之间切换和PCM音量控制。

vo_border [value]
    切换/设置边界显示。

vo_fullscreen [value]
    切换/设置全屏模式。

vo_ontop [value]
    切换/设置保持在最上层。

vo_rootwin [value]
    切换/设置在根窗口播放。

volume <value> [abs]
    增大/减小音量,或将其设置为<value>,如果[abs]不为零。

下面的命令,实际上只可用于OSD菜单控制台模式:

help
    帮助文本显示,目前还是空的。

exit
    从OSD菜单退出控制台。不像'quit',不退出MPlayer的。

hide
    隐藏了OSD菜单控制台。点击菜单命令unhides它。其他按键绑定的行为一切如常。

run <value>
    运行<value>的shell命令。在OSD菜单控制台模式标准输出和标准输入
    是通过视频输出。

 

时间: 2024-12-03 11:39:25

mplayer编程模式控制命令的相关文章

深入剖析Ruby设计模式编程中对命令模式的相关使用_ruby专题

命令模式是对象行为型使用率比较高的设计模式,别名:Action(动作),Transaction(事务) 意图: 将一个请求封装为一个对象,从而使你可对不同的请求进行参数化:对请求排队或记录请求日志,以及支持可取消的操作 这里所谓的"不同的请求"也既意味着请求可能发生的变化,是一个可能扩展的功能点. 动机: 方便扩展 结构: 协作说明:    参与角色:     Command 声明一个接口以用来实现某个操作.     ConcreteCommand 将动作与Reciver对外绑定,通过

套接字选项和I/O控制命令

套接字选项和I/O控制命令 套接字一旦建立,通过套接字选项和I/O控制命令对各种属性进行操作,便可对套接字的行为产生影响.有的选项只用于信息的返回,而有的选项则可在应用程序中影响套接字的行为.I/O控制命令肯定会对套接字的行为产生影响. 1         套接字选项 对getsocketopt(获得套接字选项)函数来说,它的常见用法是获得与指定套接字相关的信息.其原型如下: int getsockopt (   SOCKET s,           int level,          i

【译】Go语言编程模式

声明:本文为InfoQ中文站特供稿件,首发地址为:Go语言编程模式 在2016年伦敦举办的QCon大会上,Peter Bourgon做了<六年Go语言设计经验>的报告,重点探讨了在使用Go进行开发时的编程模式和反模式.在这里,我们将他给Go开发者的建议进行了简单的总结. GOPATH:将GOPATH/bin添加到"PATH"这个环境变量中,以便Go应用可以访问所需要的二进制文件.在绝大多数场景下,Bourgon建议使用全局唯一的GOPATH.有些开发者希望严格区分自己的代码

泛函编程(27)-泛函编程模式-Monad Transformer

  经过了一段时间的学习,我们了解了一系列泛函数据类型.我们知道,在所有编程语言中,数据类型是支持软件编程的基础.同样,泛函数据类型Foldable,Monoid,Functor,Applicative,Traversable,Monad也是我们将来进入实际泛函编程的必需.在前面对这些数据类型的探讨中我们发现: 1.Monoid的主要用途是在进行折叠(Foldable)算法时对可折叠结构内元素进行函数施用(function application). 2.Functor可以对任何高阶数据类型F[

Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern

   Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程概念,因而很多行内人把FP又称为Monadic Programming.这其中透露的Monad重要性则不言而喻.Scalaz是通过Monad typeclass为数据运算的程序提供了一套规范的编程方式,如常见的for-comprehension.而不同类型的Monad实例则会支持不同的程序运算行为,如:Option Monad在运算中如果遇到None值则会中途退出:St

MapReduce编程模式原理及其算法设计

MapReduce是一种编程模式,在很大程度上借鉴了函数式语言.它主要的思想是分而治之(divide and conquer).将一个大的问题切分成很多小的问题,然后在集群中的各个节点上执行,这既是Map过程.在Map过程结束之后,会有一个Ruduce的过程,这个过程即将所有的Map阶段产出的结果进行汇集. 上述过程可以说是一个显而易见的过程,所以说MapReduce是一个极其简单而有极其复杂的编程模式.说它简单是因为在程序员使用它编程解决实际问题时,他只要编写一个Mapper函数和一个Redu

shell编程--流程控制for,do-while,if-then,break,continue,case等

2.5 流程控制 2.5.1 if语法 1.语法格式 if condition then     statements [elif condition     then statements. ..] [else     statements ] fi   2.示例 #!/bin/bash read -p "please input your name:" NAME      ###read命令用于从控制台读取输入数据 printf '%s\n' $NAME if [ $NAME =

通过编程模式起底小程序开发技术特点

从小程序诞生伊始,就有很多人开始研习小程序的机理和特点,从源代码的角度.从整体架构的角度,有很多不错的文章会令人受益. 但理论是一回事,真正理解小程序,还是需要一定的实践,才能进一步去理解小程序背后的一些想法,它和现有平台的一些异同,以及如何去适应它,做出更有趣的小程序. 小程序的编程模式 最近,我们在做「轻芒小程序+」和其它轻芒产品的小程序应用过程中,对小程序有了进一步的理解,进而有了本文. 去理解一个开发平台的特性,一个不错的角度就是从"编程模式"入手,就是看在这个平台上去开发,需

《游戏编程模式》一导读

前 言 游戏编程模式在五年级的时候,我和我的小伙伴们获准使用一个放置着几台非常破旧的TRS-80s[1]的闲置教室.为了激励我们,一位老师找到了一份印有一些简单BASIC程序的打印文档给我们. 当时,计算机上的音频磁带驱动器是坏掉的,所以每次我们想要运行一些代码的时候,都不得不仔细地从头开始键入代码.这使得我们更喜欢那些只有几行代码的程序: 如果计算机打印足够多的次数,或许它会神奇的变成现实哦[2]. 10 PRINT "BOBBY IS RADICAL!!!" 20 GOTO 10