--- trunk/lib/Frey/Web/FLVPlayer.pm 2008/12/19 14:10:18 882 +++ trunk/lib/Frey/Web/FLVPlayer.pm 2008/12/23 21:00:14 883 @@ -66,14 +66,56 @@ my $FlashVars = join('&', @{ $self->FlashVars }); + $self->add_css(q| + #subtitle small { + color: #888; + } + |); + + $self->add_js(q| + var _subtitle_active = -1; + + function flv_subtitle(subtitle,nr) { + + // remove current subtitle + if ( _subtitle_active >= 0 ) { + document.getElementById('subtitle-' + _subtitle_active).style.background = '#fff'; + } + + var s = document.getElementById('subtitle'); + if ( subtitle.message ) { + s.innerHTML = '' + + subtitle.message + + ' ' + + nr + ' ' + + + subtitle.timeStart + + ' ... ' + + subtitle.timeEnd + + '' + ; + document.getElementById('subtitle-' + nr).style.background = '#ff0'; + _subtitle_active = nr; + } else { + s.innerHTML = ' '; + _subtitle_active = -1; + } + } + |); + my $info = $self->dropdown( $self->path, \%info ); qq| + -
$info
+
 no subtitle
+
+ + +
$subtitles +
$info
|; } @@ -88,9 +130,35 @@ if ( -e $srt ) { push @{ $self->FlashVars }, 'srt=1'; + my $nr = 0; + + $self->add_js(qq| + function play_from(position) { + var p = document.getElementById('flvplayer'); + p.SetVariable('player:jsSetPosition', position); + p.SetVariable('player:jsPlay',''); + return false; + } + |); + + sub jump_to { + my $t = shift; + my $position = + $1 * 60 * 60 + + $2 * 60 + + $3 + if ( $t =~ m/(\d\d):(\d\d):(\d\d),\d/ ); + ; + + qq|$t|; + } + my $callback = sub { my $data = shift; - $html .= qq| $data->{start_time} $data->{end_time} $data->{text} |; + my $s = jump_to( $data->{start_time} ); + my $e = jump_to( $data->{end_time} ); + $html .= qq|$s$e $data->{text} |; + $nr++; }; my $subtitle = Video::Subtitle::SRT->new($callback);