X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=bin%2Fmplayer.pl;h=160769fa6c939a830317a13a7dab495f5772131f;hb=7e57dd1ad291b9b605c008cc489fec41245b2a5a;hp=7f476dd0dd8a215da857639be2a79fd9814447c7;hpb=26c64edd3a795816dfc6ede7beeec7ff5f39320d;p=HTML5TV.git diff --git a/bin/mplayer.pl b/bin/mplayer.pl index 7f476dd..160769f 100755 --- a/bin/mplayer.pl +++ b/bin/mplayer.pl @@ -3,6 +3,8 @@ use warnings; use strict; +use autodie; + use IPC::Open3 qw(open3); use IO::Select; use Data::Dump qw(dump); @@ -33,7 +35,7 @@ if ( ! $movie && -e 'media/_editing' ) { } elsif ( -f $movie && $movie =~ m{\.og[vg]\b}i ) { my $movie_master = $movie; $movie = base_dir($movie) . '/video.ogv'; - unlink $movie; + unlink $movie if -e $movie; symlink base_name($movie_master), $movie; warn "symlink video.ogv -> $movie_master"; } else { @@ -227,21 +229,6 @@ sub html5tv { push @slide_t, $s->[0]; } - if ( @frames ) { - rmdir $_ foreach glob "$media_dir/s/[124]"; - my $hires = "$media_dir/s/hires"; - mkdir $hires unless -e $hires; - - oggThumb $movie, "$hires/.f%.jpg", map { $_->[0] } @frames; - - foreach my $i ( 0 .. $#frames ) { - my $from = "$hires/.f$i.jpg"; - my $to = "$hires/f" . $frames[$i]->[1] . '.jpg'; - rename $from, $to || warn "can't rename $from -> $to: $!"; - } - - } - foreach ( 0 .. $#slide_t ) { my $slide_nr = $_ + 1; push @{ $sync->{htmlEvents}->{'#slide'} }, { @@ -251,16 +238,44 @@ sub html5tv { }; } - my @slides_hires = glob "$media_dir/s/hires/*"; - my $path = "$media_dir/s"; + my $max_slide_height = 480; # XXX + + my $path = "$media_dir/s"; + my $hires = "$media_dir/s/hires"; if ( ! -d $path ) { - warn "create slides images in $path"; + warn "create slides in $path"; mkdir $path; + mkdir $hires; + + my $path = "$media_dir/presentation.pdf"; + $path = $media_dir . '/' . readlink($path) if -l $path; + + if ( -e $path ) { + warn "render pdf slides from $path\n"; + system "pdftoppm -png -r 100 $path $hires/p"; + } } - my $max_slide_height = 480; # XXX + + if ( @frames ) { + warn "create slides from video frames"; + rmdir $_ foreach glob "$media_dir/s/[124]"; + + oggThumb $movie, "$hires/.f%.jpg", map { $_->[0] } @frames; + + foreach my $i ( 0 .. $#frames ) { + my $from = "$hires/.f$i.jpg"; + my $to = "$hires/f" . $frames[$i]->[1] . '.jpg'; + rename $from, $to || warn "can't rename $from -> $to: $!"; + } + + } + + + my @slides_hires = glob "$hires/*"; + foreach my $hires ( @slides_hires ) { @@ -558,13 +573,15 @@ sub edit_subtitles { print $to_mplayer qq|pause\n|; focus_term; my $line = 1; + my $jump_to = 1; open( my $fh, '<', "$subtitles.yaml" ) || die $1; while(<$fh>) { last if /^-\s([\d\.]+)/ && $1 > $pos; + $jump_to = $line - 1 if /^---/; $line++; } close($fh); - system( qq|vi +$line "$subtitles.yaml"| ) == 0 and load_subtitles; + system( qq|vi +$jump_to "$subtitles.yaml"| ) == 0 and load_subtitles; focus_mplayer; }