2012-07-11 31 views
13

में विफल रहता है मैं वर्तमान में वीडियो एक्सेस को नियंत्रित करने के लिए एक PHP स्क्रिप्ट के माध्यम से HTML5 वीडियो (वीडियो-जेएस का उपयोग करके) में एमपी 4 वीडियो का उपयोग करने की कोशिश कर रहा हूं। कुछ शोध के बाद मैं stackoverflow article found here की मदद से यह काम करने में सक्षम था। अगर मैं PHP स्क्रिप्ट पर नेविगेट करता हूं, तो मैं वीडियो को देख सकता हूं जैसे कि मैं इसे अपने पूर्ण पथ (उदाहरण के लिए स्थानीयहोस्ट/myvideo.mp4 के बजाय स्थानीयहोस्ट/myscript.php) फ़ायरफ़ॉक्स, सफारी और आईई में देख रहा था। मेरी समस्या Google क्रोम के साथ है, जो केंद्र में एक छोटे से मीडिया प्लेयर के साथ एक ब्लैक आउट स्क्रीन दिखाती है, और कुछ भी नहीं करती है।PHP के माध्यम से एमपी 4 वीडियो डिलीवरी Google क्रोम

मैंने एक त्वरित पुनर्लेखन जैसे स्थानीयहोस्ट/avideo.mp4 का उपयोग करने का प्रयास किया जो PHP स्क्रिप्ट के लिए मार्ग है, लेकिन दुर्भाग्यवश यह कुछ भी नहीं बदला। के रूप में ऊपर उल्लिखित stackoverflow लेख में सुझाव दिया

if (is_file($uri)) { 
    header('Content-Type: video/mp4'); 
    if (isset($_SERVER['HTTP_RANGE'])) { 
     $this->rangeDownload($uri); 
     exit; 
    } else { 
     header("Content-Length: ".filesize($uri)); 
     $this->readfile_chunked($uri); 
     exit; 
    } 
} else { 
    //error 
} 

rangeDownload विधि this link के परिशिष्ट ए से सीधे लिया गया है:

यहाँ मेरी स्क्रिप्ट है।

+0

आप शीर्ष लेख जानकारी आप भेज रहे हैं के सभी पोस्ट कर सकते हैं इस्तेमाल किया उत्पन्न करने के लिए? – ethrbunny

+0

सामग्री-प्रकार, स्वीकार्य-श्रेणी, सामग्री-श्रेणी, सामग्री-लंबाई, HTTP/1.1 206 आंशिक सामग्री। इन शीर्षकों का उपयोग रेंजडाउनलोड का उपयोग करते हुए पहले मामले में किया जाता है, जिसका उपयोग क्रोम के लिए किया जाता है, हालांकि readfile_chunked कम हेडर का उपयोग करता है (अभी भी क्रोम में काम नहीं करता है)। – AaronDS

+0

एकमात्र अन्य जो मैं सुझा सकता हूं वह सामग्री-स्थानांतरण-एन्कोडिंग है: बाइनरी। मैं इस कॉम्बो का उपयोग कर सभी ब्राउज़रों के लिए PHP के माध्यम से ऑडियो स्थानांतरित करने में सक्षम हूं। – ethrbunny

उत्तर

2

शायद समस्या यूआरएल (अधिक विशेष रूप से, एक्सटेंशन) के साथ है। आम तौर पर, आप सामग्री-वितरण शीर्षलेख का उपयोग करेंगे, लेकिन मैं समझता हूं कि मोबाइल पर सामग्री वितरित करते समय यह वांछनीय नहीं है।

localhost/myscript.php/myvideo.mp4

यह "सामग्री-विन्यास" HTTP हेडर का उपयोग नहीं करने के लिए महत्वपूर्ण है का उपयोग करते हुए, के बाद से कुछ फोन जब इसे का उपयोग सामग्री को स्वीकार करने से मना कर की कोशिश करें। यूआरएल पर फ़ाइल नाम सहित, आप फोन को यह सोचने के लिए चाल करेंगे कि यह एक वास्तविक फाइल है और इसे स्वीकार करने के लिए।

अब, जब आप ग्राहक को डाउनलोड यूआरएल भेजते हैं, तो आप आमतौर पर अभी तक नहीं जानते कि ग्राहक के पास कौन सा डिवाइस है, इसलिए आप नहीं जानते कि डिवाइस किस फ़ाइल प्रारूप का समर्थन करेगा। इसलिए, आप उस यूआरएल पर फ़ाइल नाम शामिल नहीं कर सकते हैं, और एक बार फिर, आपको एक इंटरमीडिएट डाउनलोड पेज की आवश्यकता होगी। एक बार फिर, हम एक ऐसा URL का उपयोग करेगा: सामग्री डाउनलोड करने के लिए

http://wap.mydomain.tld/get.php/123456abcdef 

इस बार, जब ग्राहक जोड़ता है, get.php स्क्रिप्ट एक अस्थायी फ़ाइल बनाने नहीं होगा, लेकिन एक और स्क्रिप्ट को इंगित करें जो फ़ाइल धाराओं सामग्री। "image.jpg" हो जाएगा डाउनलोड करने के लिए परिणामी सामग्री जाना चाहिए, मध्यवर्ती डाउनलोड पृष्ठ की तरह एक यूआरएल के लिए ग्राहक बात कर सकते हैं:

http://wap.mydomain.tld/download.php/123456abcdef/image.jpg 

से (http://mobiforge.com/developing/story/content-delivery-mobile-devices)

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, हालांकि जैसा कि मैंने अपने प्रश्न में कहा था, "मैंने एक त्वरित पुनर्लेखन जैसे स्थानीयहोस्ट/avideo.mp4 का उपयोग करने का प्रयास किया जो PHP स्क्रिप्ट को रूट करता है, लेकिन दुर्भाग्यवश यह कुछ भी नहीं बदला।" मुझे यकीन नहीं है कि आप और क्या सुझाव दे रहे हैं कि मैं अलग-अलग करता हूं? – AaronDS

+0

अंतर वास्तविक यूआरएल ब्राउज़र में हो सकता है। यदि आप रीडायरेक्शन (30x) का उपयोग कर रहे हैं, तो अंततः ब्राउज़र को .mp4 एक्सटेंशन के बजाय .php एक्सटेंशन के साथ अंतिम URL मिल जाता है - यह बहुत महत्वपूर्ण हो सकता है। क्या आपने सभी अनुरोध/प्रतिक्रिया शीर्षकों की तुलना करने की कोशिश की है (उदाहरण के लिए फिडलर का उपयोग करना?) –

+0

मैं अब क्रोम में हेडर जानकारी देख रहा हूं, लेकिन मुझे यकीन नहीं है कि इसे क्या करना है। मैं क्या कह सकता हूं कि एक स्पष्ट अंतर है। मैं इस पोस्ट का पालन कुछ घंटों में एक स्क्रीनशॉट के साथ करूँगा। – AaronDS

2

मैं समझता हूँ कि आप कर रहे हैं वीडियो-जेएस का उपयोग करते हुए, लेकिन मैं html5media का उपयोग करने की सलाह देता हूं (अधिक जानकारी के लिए github page भी देखें)। मुझे वीडियो के लिए काम पर वीडियो उपलब्ध कराया गया था और मैंने वीडियो-जेएस सहित कुछ चीजों की कोशिश की लेकिन एचटीएमएल 5 मिडिया केवल एक ही था जिसे मैं सभी ब्राउज़रों में काम कर सकता था।

एक साइड नोट जो दूसरों की मदद कर सकता है: आवश्यकताओं में से एक यह था कि हमने सभी फाइलों की मेजबानी की ताकि हम जावास्क्रिप्ट फाइलों या फ़्लैश प्लेयर की सेवा के लिए तीसरे पक्ष के सर्वर पर निर्भर न हों, मुझे याद नहीं है वीडियो-जेएस यह आसान था लेकिन मुझे html5media के साथ पता है हम flowplayer डाउनलोड करने में सक्षम थे और हमारे सर्वर पर सब कुछ है।

और 3 की सिफारिश वीडियो प्रारूपों (mp4, WebM और Theora) मैं Miro Video Converter

+0

इस पोस्ट के लिए धन्यवाद, हालांकि समस्या वीडियो-जेएस के साथ नहीं है, यह विशेष रूप से क्रोम (वीडियो वीडियो के साथ क्रोम पर वीडियो नहीं खेलता है तस्वीर बाहर है, और सामान्य वीडियो फ़ाइल का उपयोग करते समय, वीडियो-जेएस ठीक काम करता है)। वीडियो-जेएस के साथ मेरे अनुभव अच्छे रहे हैं; मैंने फ़ाइल रूपांतरण के लिए हैंडब्रैक का उपयोग किया और अब तक मैंने किसी भी समस्या में भाग नहीं लिया है। हालांकि, अगर मैंने भविष्य में कुछ नया खोजना है तो मैंने html5media को नोट किया है। चीयर्स। – AaronDS

+0

कोई समस्या नहीं @Noobatron। मैं लोगों को वीडियो-जेएस का उपयोग करने से हतोत्साहित नहीं करना चाहता, क्योंकि अगर आप इसे काम कर सकते हैं तो हे, बढ़िया! मैंने सोचा कि किसी को भी इसी तरह की समस्याओं में भाग लेने के मामले में मैंने जो कुछ किया है, उसके बारे में सुनने से लाभ हो सकता है (शायद मुझे नहीं पता था कि मैं वीडियो-जेएस के साथ क्या कर रहा था)। मेरे पास घर पर हैंडब्रैक है जिसका उपयोग मैं डीवीडी को अपने एंड्रॉइड फोन में बदलने के लिए करता हूं और यह एक इलाज करता है।मैं अभी भी वेब के लिए उन 3 प्रारूपों के लिए काम पर मिरो के पास जाऊंगा क्योंकि इंटरफ़ेस वास्तव में सरल है। आशा है कि आप अपने वीडियो क्रोम काम कर रहे हैं! – Dean

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

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