⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mplayer.pm

📁 用perl和gtk+写的调用mplayer播放电视的软件
💻 PM
📖 第 1 页 / 共 2 页
字号:
package MPlayer;use strict;use IPC::Open3 'open3';use threads;use threads::shared;my $tv_thread_run : shared = 1;my @moutput : shared = 1;BEGIN {	use vars qw ($VERSION @error		     $mout $min $merror $mpid $tv_thread_run @moutput);	$VERSION     = 0.04; # modified by cyclops}sub new{	my ($class, $filename, @parameters) = @_;        push @error,  "Constructor needs \$filename\n" if (!defined ($filename));	my $self = bless ({}, ref ($class) || $class);	        # small modification by cyclops        # we don't check tv:// http:// filenames	if (defined $filename && !($filename =~ /:\/\//) && !(-e $filename)) {	    push @error, "File $filename does not exist";	}                $tv_thread_run = -1;        eval {            $mpid = open3($min, $mout, $merror, "mplayer", "-quiet", "-slave", @parameters, $filename);        };        if ($@) { #/^open3:/            push @error, "Couldn't open MPlayer: $@";            $mpid = undef;        }	elsif (!$mpid) {	    push @error, "Couldn't open MPlayer: $!";            $mpid = undef;	}        $tv_thread_run = 0;        @moutput = ();		return ($self);}#seek <value> [type=<0/\:1/\:2>]#	Seek to some place in the movie.#	Type 0 is a relative seek of +/\:- <value> seconds.##	Type 1 seek to <value> % in the movie.#	Type 2 is a seek to an absolute position of <value> seconds.sub seek{    my $self = shift;    my ($value, $type) = shift;    return $self->argerr() if not defined $value or not defined $type;    return undef unless $self->check_mplayer();        $type = 0 unless defined $type;    syswrite $min, "seek $value $type\n";    return 1;}#	????sub edl_mark{    my $self = shift;    return -1;}#audio_delay <value>#	Adjust the audio delay of value secondssub audio_delay {    my $self = shift;    my $value = shift;    return $self->argerr() unless defined $value;    return undef unless $self->check_mplayer();    syswrite $min, "audio_delay $value\n";    return 1;}#quit#	Quit MPlayersub quit{    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "quit\n";    return 1;}#pause#	Pause/\:unpause the playbacksub pause{    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "pause\n";    return 1;}#grap_frames#	Somebody know ?sub grap_frames {    my $self = shift;    return $self->not_implemented();}#pt_step <value> [force=<value>]#	Go to next/\:previous entry in the playtree.sub pt_step {    my $self = shift;    my ($value, $force) = shift;    return $self->argerr() unless defined $value;    return undef unless $self->check_mplayer();    $force = "" unless defined $force;        syswrite $min, "pt_step $value $force\n";    return 1;}#pt_up_step <value> [force=<value>]#	Like pt_step but it jumps to next/\:previous in the parent list.sub pt_up_step{    my $self = shift;    my ($value, $force) = shift;    return $self->argerr() unless defined $value;    return undef unless $self->check_mplayer();    $force = "" unless defined $force;    syswrite $min, "pt_up_step $value $force\n";    return 1;}#alt_src_step <value>#	When more than one source is available it selects the next/\:previous one#	(only supported by asx playlist).sub alt_src_step{    my $self = shift;    my $value = shift;    return unless defined $value;    return undef unless $self->check_mplayer();    syswrite $min, "alt_src_step $value\n";    return 1;}#sub_delay <value> [abs=<value>]#	Adjust the subtitles delay of +/\:- <value> seconds or set it to <value>#	seconds when abs is non zero.sub sub_delay {    my $self = shift;    my $value = shift;    my $abs = shift;    return $self->argerr() unless defined $value;    $abs = 0 unless defined $abs;    return undef unless $self->check_mplayer();    syswrite $min, "sub_delay $value $abs\n";    return 1;}#volume <dir>#	Increase/\:decrease volumesub volume{    my $self = shift;    my $dir = shift;    return $self->argerr() unless defined $dir;    return undef unless $self->check_mplayer();    syswrite $min, "volume $dir\n";    return 1;}#use_master#	Switch volume control between master and pcm.sub use_master{    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "use_master\n";    return 1;}#mute#	Mute/\:unmute sound output.sub mute {    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "mute\n";    return 1;}#[contrast|brightness|hue|saturation] <-100-100> [abs=<value>]#	Set/\:Adjust video parameters.sub contrast {    my $self = shift;    my $value = shift;    my $abs = shift;    return $self->argerr() unless defined $value;    return undef unless $self->check_mplayer();    $abs = 0 unless defined $abs;    syswrite $min, "contrast $value $abs\n";    return 1;}sub brightness {    my $self = shift;    my $value = shift;    my $abs = shift;    return $self->argerr() unless defined $value;    return undef unless $self->check_mplayer();    $abs = 0 unless defined $abs;    syswrite $min, "brightness $value $abs\n";    return 1;}sub hue{    my $self = shift;    my $value = shift;    my $abs = shift;    return $self->argerr() unless defined $value;    return undef unless $self->check_mplayer();    $abs = 0 unless defined $abs;    syswrite $min, "hue $value $abs\n";    return 1;}sub saturation{    my $self = shift;    my $value = shift;    my $abs = shift;    return $self->argerr() unless defined $value;    return undef unless $self->check_mplayer();    $abs = 0 unless defined $abs;    syswrite $min, "saturation $value $abs\n";    return 1;}#frame_drop [type=<value>]#	Toggle/\:Set frame dropping mode.sub frame_drop {    my $self = shift;    my $value = shift;    return undef unless $self->check_mplayer();    syswrite $min, "frame_drop\n";    return 1;}#sub_alignment <value>#	Set subtitle alignment.sub sub_alignment {    my $self = shift;    my $value = shift;    return unless defined $value;    return undef unless $self->check_mplayer();    syswrite $min, "sub_alignment $value\n";    return 1;}#sub_visibility#	Toggle subtitle visibility.sub sub_visibility{    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "sub_visibility\n";    return 1;}#sub_pos <value>#	Adjust subtitles position.sub sub_pos {    my $self = shift;    my $value = shift;    return unless defined $value;    return undef unless $self->check_mplayer();    syswrite $min, "sub_pos $value\n";    return 1;}#vobsub_lang#	Switch the subtitle language when using VOBSub subtitles.sub vobsub_lang{    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "vobsub_lang\n";    return 1;}#get_percent_pos#	???sub get_percent_pos{    my $self = shift;    return $self->not_implemented();}#get_time_length#	???sub get_time_length{    my $self = shift;    return $self->not_implemented();}#vo_fullscreen#	Switch to fullscreen mode.sub vo_fullscreen{    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "vo_fullscreen\n";    return 1;}#panscan value [value2]#	???sub panscan {    my $self = shift;    my $value = shift;    return $self->not_implemented();}#loadfile url#	Load the given file/\:url.sub loadfile {    my $self = shift;    my $url = shift;    return $self->argerr() unless defined $url;    return undef unless $self->check_mplayer();    syswrite $min, "loadfile $url\n";    return 1;}#loadlist file#	Load the given playlist file.sub loadlist {    my $self = shift;    my $file = shift;    return $self->argerr() unless defined $file;    return undef unless $self->check_mplayer();        syswrite $min, "loadlist $file\n";    return 1;}#change_rectangle val1 val2#	??? used by the rectangle video filter.sub change_rectangle{    my $self = shift;    my ($val1, $val2) = shift;    return $self->not_implemented();}#dvdnav button#	Press the given dvdnav button.#	1 is up, 2 is down, 3 is left, 4 is right, 5 is menu and 6 is select.sub dvdnav{    my $self = shift;    my $button = shift;    return $self->argerr() unless defined $button;    return undef unless $self->check_mplayer();    syswrite $min, "dvdnav $button\n";    return 1;}#gui_[loadsubtitle|about|play|stop]#	GUI actionssub gui_loadsubtitle{    my $self = shift;    return undef unless $self->check_mplayer();    syswrite $min, "gui_loadsubtitle\n";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -