Ticket #8206: pseudostreaming.2.patch

File pseudostreaming.2.patch, 5.5 KB (added by Vitold <vitold.md@…>, 10 years ago)

pseudosreaming patch for r25080

Line 
1diff -ur mythweb_ori/modules/stream/handler.pl mythweb/modules/stream/handler.pl
2--- mythweb_ori/modules/stream/handler.pl       2010-06-11 00:14:18.000000000 +0200
3+++ mythweb/modules/stream/handler.pl   2010-06-10 22:50:32.000000000 +0200
4@@ -2,10 +2,10 @@
5 #
6 # MythWeb Streaming/Download module
7 #
8-# @url       $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/stream/handler.pl $
9-# @date      $Date: 2008-11-21 21:37:31 +0100 (ven 21 nov 2008) $
10-# @version   $Revision: 19146 $
11-# @author    $Author: kormoc $
12+# @url       $URL$
13+# @date      $Date$
14+# @version   $Revision$
15+# @author    $Author$
16 #
17 
18 # Necessary constants for sysopen
19@@ -30,7 +30,7 @@
20     elsif ($ENV{'REQUEST_URI'} =~ /\.flvp$/i) {
21         require "modules/$Path[0]/stream_flvp.pl";
22     }
23-    elsif ($ENV{'REQUEST_URI'} =~ /\.flv$/i) {
24+    elsif ($ENV{'REQUEST_URI'} =~ /\.flv\?.+$/i) {
25         require "modules/$Path[0]/stream_flv.pl";
26     }
27 # Mpeg4?
28diff -ur mythweb_ori/modules/stream/stream_flv.pl mythweb/modules/stream/stream_flv.pl
29--- mythweb_ori/modules/stream/stream_flv.pl    2010-06-11 00:14:18.000000000 +0200
30+++ mythweb/modules/stream/stream_flv.pl        2010-06-11 00:07:07.000000000 +0200
31@@ -2,10 +2,10 @@
32 #
33 # MythWeb Streaming/Download module
34 #
35-# @url       $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/stream/stream_flv.pl $
36-# @date      $Date: 2010-05-31 22:51:05 +0200 (lun 31 mai 2010) $
37-# @version   $Revision: 24931 $
38-# @author    $Author: kormoc $
39+# @url       $URL$
40+# @date      $Date$
41+# @version   $Revision$
42+# @author    $Author$
43 #
44 
45     use POSIX qw(ceil floor);
46@@ -29,7 +29,9 @@
47     }
48     sub shutdown_handler {
49         kill(1, $ffmpeg_pid) if ($ffmpeg_pid);
50-        kill(-1, $ffmpeg_pgid) if ($ffmpeg_pid);
51+
52+        # this cause an internal server error
53+        # kill(-1, $ffmpeg_pgid) if ($ffmpeg_pid);
54     }
55 
56 # Find ffmpeg
57@@ -72,8 +74,14 @@
58     $vbitrate = 256 unless ($vbitrate && $vbitrate > 1);
59     $abitrate = 64  unless ($abitrate && $abitrate > 1);
60 
61+    if ("$ENV{'REQUEST_URI'}" =~ /start\=(\d+)$/i) {
62+            $start = $1; }
63+    else {
64+            $start = 0; }
65+
66     my $ffmpeg_command = $ffmpeg
67                         .' -y'
68+                        .' -ss '.shell_escape("$start")
69                         .' -i '.shell_escape($filename)
70                         .' -s '.shell_escape("${width}x${height}")
71                         .' -g 30'
72@@ -98,13 +106,16 @@
73     $dur = `ffmpeg -i $filename 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//`;
74     if ($dur && $dur =~ /\d*:\d*:.*/) {
75         @times = split(':',$dur);
76-        $lengthSec = $times[0]*3600+$times[1]*60+$times[2];
77+        $lengthSec = ($times[0]*3600+$times[1]*60+$times[2])-$start;
78         $size = int($lengthSec*($vbitrate*1000+$abitrate*1000)/8);
79         print header(-type => 'video/x-flv','Content-Length' => $size);
80     } else {
81         print header(-type => 'video/x-flv');
82     }
83 
84     my $buffer;
85     if (read DATA, $buffer, 53) {
86         print $buffer;
87diff -ur mythweb_ori/modules/tv/tmpl/default/detail.php mythweb/modules/tv/tmpl/default/detail.php
88--- mythweb_ori/modules/tv/tmpl/default/detail.php      2010-06-11 00:14:12.000000000 +0200
89+++ mythweb/modules/tv/tmpl/default/detail.php  2010-06-10 23:26:33.000000000 +0200
90@@ -3,10 +3,10 @@
91  * This displays details about a program, as well as provides recording
92  * commands.
93  *
94- * @url         $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/tv/tmpl/default/detail.php $
95- * @date        $Date: 2010-06-06 21:36:48 +0200 (dim 06 jun 2010) $
96- * @version     $Revision: 25007 $
97- * @author      $Author: kormoc $
98+ * @url         $URL$
99+ * @date        $Date$
100+ * @version     $Revision$
101+ * @author      $Author$
102  * @license     GPL
103  *
104  * @package     MythWeb
105@@ -554,7 +554,7 @@
106             <script>
107                 flowplayer(
108                     "player",
109-                    "<?php echo root_url ?>tv/flowplayer-3.1.1.swf", {
110+                    "<?php echo root_url ?>tv/flowplayer-3.1.5.swf", {
111                     playlist: [
112                         // this first PNG clip works as a splash image
113                         {
114@@ -563,6 +563,7 @@
115                             },
116                         // Then we have the video
117                         {
118+                            provider: "pseudo",
119                             url: "<?php echo video_url($program, 'flv'); ?>",
120                             duration: <?php echo $program->length ?>,
121                             autoPlay: false,
122@@ -571,7 +572,15 @@
123                             // waste bandwidth and CPU on the remote machine.
124                             autoBuffering: false
125                             }
126-                        ]}
127+                     
128+                    ],
129+                    plugins: { 
130+                        pseudo: {
131+                            url: "flowplayer.mythpseudostreaming.swf"
132+                        }
133+                    }
134+                    }
135+
136                     );
137             </script>
138 <?php       } elseif (file_exists('modules/tv/MFPlayer.swf')) { ?>
139@@ -689,7 +698,7 @@
140 <?php   } else { ?>
141                 <a href="<?php echo $program->url ?>" title="<?php echo t('Direct Download') ?>"
142                     ><img src="<?php echo $program->thumb_url($flv_w,0) ?>" width="<?php echo $flv_w ?>"></a>
143-<?php   } ?></td>
144+<?php   } ?>
145             </div>
146             <div class="x-links">
147                 <a href="<?php echo video_url($program, 'asx') ?>" title="<?php echo t('ASX Stream') ?>"