Advertisement
Guest User

Mojo+FFmpeg+ReadWriteFork

a guest
Apr 3rd, 2016
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.03 KB | None | 0 0
  1. use FFmpeg::Stream::Helper;
  2. use Mojolicious::Lite;
  3. use Mojo::IOLoop::ReadWriteFork;
  4.  
  5. get '/' => sub {
  6.     my $c = shift;
  7.     $c->render(template=>'root');
  8. };
  9.  
  10. get '/video.mp4' => sub {
  11.     my $self = shift->render_later;
  12.  
  13.     my $fork = Mojo::IOLoop::ReadWriteFork->new;
  14.  
  15.     my $fsh=FFmpeg::Stream::Helper->new;
  16.    
  17.     my $command=$fsh->command('/arc/video/movies/Fear and Loathing in Las Vegas.avi');
  18.  
  19.     $self->stash(fork => $fork);
  20.  
  21.     $self->on(finish => sub {
  22.         my $self = shift;
  23.         my $fork = $self->stash('fork') or return;
  24.         app->log->debug("Ending ffmpeg process");
  25.         $fork->kill;
  26.               });
  27.  
  28.     $fork->on(read => sub {
  29.         my($fork, $buffer) = @_;
  30.         $self->write_chunk($buffer);
  31.               });
  32.  
  33.     warn ($command);
  34.    
  35.     $fork->start(program => $command);
  36. };
  37.  
  38. app->start;
  39.  
  40. __DATA__
  41.  
  42. @@ root.html.ep
  43.  
  44. <!DOCTYPE html>
  45. <html>
  46. <body>
  47.  
  48. <div style="text-align:center">
  49.   <video id="video0" controls>
  50.     <source src="video.mp4" type="video/mp4">
  51.     Your browser does not support HTML5 video.
  52.   </video>
  53. </div>
  54.  
  55. </body>
  56. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement