/[Frey]/trunk/lib/Frey/Web/FLVPlayer.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/Web/FLVPlayer.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 850 - (hide annotations)
Mon Dec 15 19:41:35 2008 UTC (15 years, 5 months ago) by dpavlin
File size: 1982 byte(s)
render subtitles as table
1 dpavlin 844 package Frey::Web::FLVPlayer;
2 dpavlin 809 use Moose;
3    
4     =head1 SEE ALSO
5    
6 dpavlin 846 L<http://flv-player.net/>
7 dpavlin 809
8     =cut
9    
10     extends 'Frey';
11     with 'Frey::Web';
12     #with 'Frey::Storage';
13 dpavlin 823 with 'Frey::File::FLV';
14 dpavlin 809
15 dpavlin 850 use Video::Subtitle::SRT;
16    
17 dpavlin 847 has title => (
18     is => 'rw',
19     isa => 'Str',
20     );
21    
22 dpavlin 823 has path => (
23 dpavlin 809 is => 'rw',
24     isa => 'Str',
25     required => 1,
26 dpavlin 825 default => 'var/flv/codeswarm.flv',
27 dpavlin 809 );
28    
29 dpavlin 846 has player_swf => (
30 dpavlin 814 is => 'rw',
31     isa => 'Str',
32     required => 1,
33 dpavlin 846 default => 'http://flv-player.net/medias/player_flv_maxi.swf',
34 dpavlin 814 );
35    
36 dpavlin 850 has FlashVars => (
37     is => 'rw',
38     isa => 'ArrayRef[Str]',
39     default => sub { [] },
40     lazy => 1, # hide it from user
41     );
42    
43 dpavlin 809 sub as_markup {
44     my ($self) = @_;
45    
46 dpavlin 823 my $path = $self->path;
47     die "can't find $path" unless -e $path;
48 dpavlin 809
49 dpavlin 823 my $url = "http://localhost:3000/$path"; # FIXME
50 dpavlin 814
51 dpavlin 846 my $swf = $self->player_swf;
52 dpavlin 814
53 dpavlin 823 my %info = $self->flv_info;
54     warn "# info ", $self->dump( \%info );
55    
56     my $width = $info{meta_width};
57     my $height = $info{meta_height};
58    
59 dpavlin 850 push @{ $self->FlashVars }, "flv=$url";
60 dpavlin 847
61 dpavlin 850 my $subtitles = $self->subtitles_as_markup;
62 dpavlin 847
63 dpavlin 850 push @{ $self->FlashVars }, 'title=' . $self->title if $self->title;
64 dpavlin 847
65 dpavlin 850 my $FlashVars = join('&amp;', @{ $self->FlashVars });
66 dpavlin 847
67 dpavlin 809 qq|
68 dpavlin 846 <object type="application/x-shockwave-flash" data="$swf" width="$width" height="$height">
69     <param name="movie" value="$swf" />
70 dpavlin 847 <param name="FlashVars" value="$FlashVars" />
71 dpavlin 846 </object>
72 dpavlin 850 $subtitles
73 dpavlin 809 |;
74    
75     }
76    
77 dpavlin 850 sub subtitles_as_markup {
78     my ( $self ) = @_;
79    
80     my $srt = $self->path;
81     $srt =~ s{\.flv}{.srt};
82     my $html = '';
83    
84     if ( -e $srt ) {
85     push @{ $self->FlashVars }, 'srt=1';
86    
87     my $callback = sub {
88     my $data = shift;
89     $html .= qq|<tr><td> $data->{start_time} </td><td> $data->{end_time} </td><td> $data->{text} </td></tr>|;
90     };
91    
92     my $subtitle = Video::Subtitle::SRT->new($callback);
93     $subtitle->debug(1);
94     $subtitle->parse( $srt );
95    
96     $html = qq|
97     <table class="html">
98     <thead>
99     <tr><th>from</th><th>to</th><th>subtitle</th></tr>
100     </thead>
101     <tbody>
102     $html
103     <tbody>
104     </table>
105     |;
106     }
107    
108     return $html;
109     }
110    
111 dpavlin 809 1;

  ViewVC Help
Powered by ViewVC 1.1.26