मैं आईपैड के लिए एक वेब एप्लिकेशन डिज़ाइन कर रहा हूं जो मोबाइल सफारी में HTML5 का उपयोग करता है। मैं IIS 7 पर होस्ट की गई ASP.NET .ashx फ़ाइल के माध्यम से फ़ाइल को मैन्युअल रूप से प्रेषित कर रहा हूं .NET Framework v2.0।मोबाइल सफारी कई वीडियो अनुरोध करता है
आवश्यक कोड आंशिक रूप से इस तरह दिखता है:
// If we receive range header only transmit partial file
if (context.Request.Headers["Range"] != null)
{
var fi = new FileInfo(filePath);
long fileSize = fi.Length;
// Read start/end index
string headerRange = context.Request.Headers["Range"].Replace("bytes=", "");
string[] range = headerRange.Split('-');
int startIndex = Convert.ToInt32(range[0]);
int endIndex = Convert.ToInt32(range[1]);
// Add header Content-Range,Last-Modified
context.Response.StatusCode = (int)HttpStatusCode.PartialContent;
context.Response.AddHeader(HttpWorkerRequest.GetKnownResponseHeaderName(HttpWorkerRequest.HeaderContentRange), String.Format("bytes {0}-{1}/{2}", startIndex, endIndex, fileSize));
context.Response.AddHeader(HttpWorkerRequest.GetKnownResponseHeaderName(HttpWorkerRequest.HeaderLastModified), String.Format("{0:r}", fi.CreationTime));
long length = (endIndex - startIndex) + 1;
context.Response.TransmitFile(filePath, startIndex, length);
}
else
context.Response.TransmitFile(filePath);
अब क्या मुझे कोई अंत नहीं करने के लिए भ्रमित निवेदन के साथ कि सफारी का उपयोग करने लगता है के लिए प्रोटोकॉल है। फिडलर के माध्यम से अनुरोधों को प्रॉक्सी करने से मुझे aprox 2MB फ़ाइल के लिए निम्न मिलता है।
नोट: जब एक mp4 फ़ाइल का अनुरोध, सीधे आईआईएस 7 के माध्यम से सेवा की, प्रोटोकॉल और अनुरोध की राशि एक ही
- पहले यह जो इसे पढ़ने के लिए अनुमति देता है 2 बाइट्स का अनुरोध करता हैं 'सामग्री-रेंज' शीर्षलेख।
- अब यह संपूर्ण सामग्री का अनुरोध
- (?) -
- यह फिर से चरण 1 & 2. करने के लिए आगे बढ़ता है (??)
- -
- अब यह फ़ाइल के केवल भागों का अनुरोध करता है (???)
यदि फ़ाइल बड़ी है तो अंतिम चरण कई और होंगे। मैंने 99 अनुरोध तक परीक्षण किया है जहां प्रत्येक अनुरोध में फ़ाइल का एक हिस्सा समान रूप से विभाजित होता है। यह समझ में आता है और मुझे उम्मीद है कि मुझे क्या लगता है। मैं समझ नहीं पा रहा हूं कि यह पहले 2 बाइट्स के साथ 2 प्रारंभिक अनुरोध के साथ-साथ पूरी फाइल के लिए 2 अनुरोध करता है इससे पहले कि यह अंततः विभिन्न हिस्सों में फ़ाइल का अनुरोध करता है।
जैसा कि मैंने फ़ाइल की लंबाई के आधार पर फ़ाइल को 2 - 3 बार डाउनलोड किया है और क्या उपयोगकर्ता इसे लंबे समय तक देखता है या नहीं।
क्या कोई इस व्यवहार को समझ सकता है और शायद यह बता सकता है कि मैं एकाधिक डाउनलोड को रोकने के लिए क्या कर सकता हूं। धन्यवाद।
मैं एक ही बात में आए:
यहाँ मेरी मूल (अनुत्तरित) इस विषय पर सवाल है। यह भी आईपॉड और यदि आप एमपी 3 फाइलों से निपट रहे हैं। दुर्भाग्यवश कोई समाधान नहीं ... – worenga
मैंने इसे बहुत बड़े (30meg) वीडियो के साथ देखा है। जब कभी आईपैड से अनुरोध आता है तो पूरी फाइल के लिए 3 अनुरोध! –
MPMoviePlayerController के अंदर एमपी 3 फ़ाइलों के साथ मुझे वही अनुभव मिला है। यहां एक प्रश्न है जिसके बारे में मैंने पूछा कि अनुत्तरित नहीं हुआ। मेरे प्रश्न के अनुरोधों के बारे में थोड़ी अधिक जानकारी है। http://stackoverflow.com/questions/4855485/mpmovieplayercontroller-not-playing-full-length-mp3 – TomSwift