in reply to Perl not playing video with vlc plugin

here is my file reading part

autoflush before you do any printing not afterwards

vlc player is crashing..

See Build HTML pages that use the plugin in http://www.videolan.org/doc/vlc-user-guide/en/ch07.html

First get that to work, then do *cgi* from perl

  • Comment on Re: awanti Perl not playing video with vlc plugin

Replies are listed 'Best First'.
Re^2: awanti Perl not playing video with vlc plugin
by Anonymous Monk on Dec 29, 2015 at 19:22 UTC
      static html page has no header..

        static html page has no header..

        every time you make a http request headers are sent before the content

        a static html page on your local harddrive does not test how http works

        Anyway, this works for me

        #!/usr/bin/perl -- use CGI::Carp qw/ fatalsToBrowser /; use strict; use warnings; use IO::Handle; use CGI; use autodie qw/ open /; Main( @ARGV ); exit( 0 ); sub Main { STDOUT->autoflush; my $cgi = CGI->new; PrintHeadersAndContent ( $cgi ); } sub PrintHeadersAndContent { use autodie qw/ open /; my( $cgi ) = @_; my $filename = q{/harcoded/path/to/one/file}; open my($fh),'<:raw', $filename; ## or die by autodie my $attachment = 'Juice.mp4'; my $size = -s $filename; my $begin = 0; my $end = $size; if( my $httprange = $cgi->http('range') ){ if( $httprange =~ /bytes=(\d+)(?:-(\d*))?/i ){ my $from = $1; my $to = $2; $from and $begin = $from; $to and $end = $to; } } my $range = "$begin-$size/$size"; print $cgi->header( -nph => 1, -type => "application/x-vlc-plugin", -attachment => $attachment, -Accept_Ranges => 'bytes', -Content_Length => $size, -Content_Range => $range, -Content_Transfer_Encoding => 'binary', ); my $numbytes = 1024*16;; seek $fh, $begin, 0; my $curr = $begin; while(not eof $fh) { my $readed = read $fh, my($data) , $numbytes; print STDOUT $data; $readed == $numbytes or warn "Only read($readed) but wanted($numbytes): $! ## $ +^E "; $curr += $numbytes; if( $curr + $numbytes > $size ){ $numbytes = $size - $curr; } } close $fh; } __END__