2013-05-24 8 views
6

मैं वीडियो चलाने के लिए वीडियो टैग का उपयोग कर रहा हूं।एमपी 4 - एचटीएमएल 5 वीडियो टैग में नहीं खेल रहा है

मैं इस तरह प्लेबैक के लिए php फ़ाइलों का उपयोग कर:

<video id="playvideo" preload="auto" width="845" height="395" 
    poster="http://video-js.zencoder.com/oceans-clip.png"> 

    <source src="../getvideo_webm.php" type='video/webm' /> 
    <source src="../getvideo_mp4.php" type='video/mp4'/> 
    <source src="../getvideo_ogv.php" type='video/ogg' /> 

    </video> 

सभी .php फ़ाइलों ठीक खेल रहे हैं जब मैं उन्हें सीधे ब्राउज़र से चेक इन करें। लेकिन स्रोत फ़ाइलों के रूप में सभी .php के साथ उपरोक्त सेटअप नहीं खेलेंगे। अगर मैं सीधे .mp4 स्रोत देता हूं तो यह ठीक खेलेंगे।

getvideo_mp4.php इस तरह दिखता है:

$path = 'oceans-clip.mp4'; 
if (file_exists($path)) 
{ 
$size=filesize($path); 
[email protected]($path,'rb'); 
if(!$fm) { 
// You can also redirect here 
header ("HTTP/1.0 404 Not Found"); 
die(); 
} 
$begin=0; 
$end=$size; 
if(isset($_SERVER['HTTP_RANGE'])) { 
if(preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', 
$_SERVER['HTTP_RANGE'],$matches)){ 
$begin=intval($matches[0]); 
if(!empty($matches[1])) { 
$end=intval($matches[1]); 
} 
} 
} 
if($begin>0||$end<$size) 
header('HTTP/1.0 206 Partial Content'); 
else 
header('HTTP/1.0 200 OK'); 
header("Content-Type: video/mp4"); 
header('Accept-Ranges: bytes'); 
header('Content-Length:'.($end-$begin)); 
header("Content-Disposition: inline;"); 
header("Content-Range: bytes $begin-$end/$size"); 
header("Content-Transfer-Encoding: binary\n"); 
header('Connection: close'); 
$cur=$begin; 
fseek($fm,$begin,0); 
while(!feof($fm)&&$cur<$end&&(connection_status()==0)) 
{ print fread($fm,min(1024*16,$end-$cur)); 
$cur+=1024*16; 
usleep(1000); 
} 
die(); 
} 

तो क्या मैं गलत कर रहा हूँ?

+0

अब ... ऐसा लगता है कि यह उपरोक्त कोड के साथ काम कर रहा है ..: -/ – Niels

+0

अच्छी नौकरी नील्स ... –

उत्तर

3

ऊपर कोड काम कर रहा है। .php फ़ाइलों के लिए src url को बदलने के बाद, यह वास्तव में काम करता था। अब यह वीडियो टैग में स्रोतों के रूप में केवल php फ़ाइलों के साथ moz, यानी क्रोम में खेलता है।

+0

क्या आप कृपया बता सकते हैं कि आपने क्या बदला है? मुझे एक ही समस्या है लेकिन उपरोक्त कोड – ChronosMOT

+1

काम नहीं करता है क्या आपकी फ़ाइल में कोई अन्य कोड है या आपके PHP फ़ाइल में केवल कोड के ऊपर कोड है? – Niels

+0

बहुत सारे कोड हैं, मैं फ़ाइल को डिक्रिप्ट कर रहा हूं और मुझे इस PHP स्क्रिप्ट के माध्यम से सभी एन्क्रिप्टेड संसाधन मिल रहे हैं (लेकिन मैं केवल mp4s के लिए उपरोक्त कोड का उपयोग कर रहा हूं)। हालांकि कल से मुझे आईई 11 और फ़ायरफ़ॉक्स 40.0.3 पर चलाने के लिए मिला। हालांकि क्रोम अभी भी फाइल नहीं चलाएगा। इसके अलावा अब तक मैं इस कोड के एक संशोधित संस्करण का उपयोग कर रहा हूं: http://www.pixelstech.net/article/1357732373- आउटपुट-a-file-with-HTTP-ेंज-header-in-PHP जो बहुत करीब है:) आपके कोड पर लेकिन थोड़ा अलग हेडर का उपयोग करता है। – ChronosMOT

0

आपको इसे पुनर्प्राप्त करने के बाद पथ को गूंजना होगा और इसे HTML5 के वीडियो टैग की 'src' विशेषता में भेजना होगा। आपका वर्तमान रणनीति अच्छी तरह से काम नहीं करेगा, मैं आशा है कि ...

उदाहरण के लिए,

<source src="<?php echo getMp4VideoUrl(); ?>" type='video/mp4'/> 
+0

हाय विजय .. ऐसा लगता है जैसे आप "बस" सीधे सेवा करना चाहते हैं PHP द्वारा स्रोत। मैं वास्तविक मीडिया फ़ाइल स्थान को छिपाना चाहता हूं, और getvideo_xx php फ़ाइलों से उन्हें गतिशील लोड करना चाहता हूं। – Niels

+0

यदि आप ऐसा भी करते हैं, तो उपयोगकर्ता वीडियो टैग संदर्भ मेनू से वीडियो पर राइट क्लिक करके और 'वीडियो स्थान कॉपी करें' विकल्प चुनकर आसानी से अपने वीडियो डाउनलोड कर सकते हैं। मैंने पहले ही इस काम को आजमाया है लेकिन असफल रहा है। इस लिंक को आज़माएं, http://stackoverflow.com/questions/9756837/prevent-html5-video-from-being-downloaded-right-click-saved –

+1

हाय विजय। हालांकि अब ऐसा लगता है कि उपरोक्त कोड काम कर रहा है .. मुझे विभिन्न तरीकों से प्रयास करने के एक बहुत ही दुर्भाग्यपूर्ण कदम की तरह लगता है .. दाएं क्लिक अक्षम हैं और इसे एक मोडलविंडो में परोसा जाता है .. मुझे पता है कि यह इस फ़ाइल के लिए सुरक्षित नहीं है। मैं नहीं चाहता कि उपयोगकर्ता फाइलों के उत्कृष्ट स्थान को जान सके .. – Niels

0

ब्राउज़र अनुरोध के साथ भेजे गए हेडर से वीडियो सामग्री की पहचान करता है। बस हेडर में हेरफेर करें और PHP एक्सटेंशन रखें। यह सही काम करेगा

संबंधित मुद्दे