ruby on rails - रेल+एक्स- Sendfile आईपैड के लिए बड़े वीडियो की सेवा



ruby-on-rails ipad (1)

मेरे पास एक बड़ी (कुछ सैकड़ों एमबी) वीडियो फाइलों की सेवा है और यह अपाचे पर रेल + X-Sendfile का उपयोग करके डेस्कटॉप ब्राउज़र पर बिल्कुल काम कर रहा है I एक महत्वपूर्ण आवश्यकता यह है कि इन वीडियो को केवल लॉग इन उपयोगकर्ताओं के लिए निजी और दृश्यमान होना चाहिए, इसलिए उनको सेवा देने के लिए मैं रेल का प्रयोग कर रहा हूं।

सब कुछ अन्य उपकरणों के साथ पूरी तरह से काम करता है मैं इस तरह से वीडियो की सेवा करता हूं:

response.headers["X-Sendfile"]=  filename
send_file filename, :disposition => :inline, :stream => true, :x_sendfile => true

लेकिन आईपैड के अनुरोधों को बाइट श्रेणी शीर्षलेख की आवश्यकता है एक समाधान (जो पूरी तरह से काम नहीं करता है) ऐसा कुछ है:

size = File.size(filename)
bytes = Rack::Utils.byte_ranges(request.headers, size)[0]
offset = bytes.begin
length = bytes.end  - bytes.begin

response.header["Accept-Ranges"]=  "bytes"
response.header["Content-Range"] = "bytes #{bytes.begin}-#{bytes.end}/#{size}"

send_data IO.binread(filename,length, offset), :type => "video/mp4", :stream => true, :disposition => 'inline', :file_name => filename 

इस समाधान के साथ मेरे पास 50 एमबी वीडियो से अधिक समस्याएं हैं, और अधिक महत्वपूर्ण, मैं रेल को एक जिम्मेदारी देता हूं जो इसे नहीं करना चाहिए था। यह x-sendfile मॉड्यूल के माध्यम से स्ट्रीमिंग के भारी भार को संभालने के लिए अपाचे होना चाहिए। लेकिन मैं नहीं जानता कि कैसे send_data विधि में x-sendfile पैरामीटर नहीं है, और send_file विधि से युक्त समाधान काम नहीं कर रहे हैं।

मुझे ये 2 प्रश्न मेरे जैसा मिल गए लेकिन वे काम नहीं कर रहे हैं: रेल मीडिया फ़ाइल स्ट्रीम को भेजें_डेटा या send_file विधि के माध्यम से बाइट रेंज अनुरोध स्वीकार करते हैं , रेल के माध्यम से एक आईपैड के लिए एमपी 4 फ़ाइलों की सेवा का सही तरीका क्या है?

क्या हो रहा है पर कोई सुराग? मैं इसके साथ हफ्ते से संघर्ष कर रहा हूं और मुझे इसे काम करने की ज़रूरत है अन्य व्यावहारिक समाधान का स्वागत है


यह पूरी तरह से असंबंधित हो सकता है क्योंकि मैं सर्वर के लिए एनजीएनएक्स का उपयोग कर रहा हूं, लेकिन अगर यह केवल आईओएस के लिए काम नहीं करता है, तो इस ब्लॉग पोस्ट को देखें । अपाचे के लिए समान समाधान हो सकता है।

एक अर्थ में, मुझे एक प्रॉक्सी हेडर जोड़ना था जो एक फ़ोल्डर पथ में आंतरिक रीडायरेक्ट करता था। यह कितनी बेवक़ूफ़ लग सकता है, ऐप्पल के कुछ प्रकार के गोपनीयता के मुद्दे हैं जो ऑडियो और वीडियो फ़ाइलों के साथ प्लेबैक के लिए आवश्यक हैं। फिर से सुनिश्चित न हो कि यह आपके लिए समाधान है, लेकिन एनजीएन के लिए यह चमत्कार और मेरे महीने के लंबे सिरदर्द को ठीक किया।





x-sendfile