हमें mp4s की सेवा करने में परेशानी हो रही है जो डिफ़ॉल्ट रेल 3 ऐप का उपयोग करके आईपैड पर खेलेंगे। डेस्कटॉप पर क्रोम और अन्य ब्राउज़रों में रूट देखने पर एमपी 4 सही ढंग से परोसा जाता है।आईपैड में रेल के माध्यम से एमपी 4 फ़ाइलों को सेवा करने का उचित तरीका क्या है?
file_path = File.join(Rails.root, 'test.mp4')
send_file(file_path, :disposition => "inline", :type => "video/mp4")
हम वीडियो देखने के लिए 0.0.0.0:3000/video/test.mp4 मारा और साथ प्रस्तुत कर रहे हैं iPad पर आइकन नहीं खेल सकते:
यहाँ हमारे कोड है। हमने विभिन्न शीर्षकों "सामग्री-लंबाई", "सामग्री-श्रेणी", आदि को संशोधित करने का प्रयास किया है, लेकिन वे अंतिम परिणाम को प्रभावित नहीं करते हैं।
हम भी कुछ हद
अर्थात
File.open(file_path, "r") do |f|
send_data f.read, :type => "video/mp4"
end
जब Ipad पर देखा एक ही वीडियो सार्वजनिक फ़ोल्डर से ठीक कार्य करता है send_data का उपयोग कर की कोशिश की है।
आईपैड में रेल के माध्यम से एमपी 4 फ़ाइलों को सेवा करने का उचित तरीका क्या है?
मुझे लगता है कि कोड में एक fencepost त्रुटि है। मेरा मानना है कि लंबाई 'bytes.end - bytes.begin + 1' होनी चाहिए - यदि बाइट रेंज बाइट 10 से 12 तक है, तो यह 3 बाइट होना चाहिए। साथ ही, यदि आप किसी कारण से 'send_data' का उपयोग कर रहे हैं, तो प्रतिक्रिया शीर्षलेख में 'सामग्री-लंबाई' सेट करना सुनिश्चित करें। – tovodeverett
इस समाधान के लिए धन्यवाद! मैंने @tovodeverett टिप्पणी के आधार पर सुधार जोड़ा। विकास के लिए सिनात्रा (रेल के बजाए) का उपयोग करके, मैंने sinatra/स्ट्रीमिंग contrib का उपयोग करके send_data व्यवहार को दोहराने में कामयाब रहे: 'stream {| out | out.write IO.binread (file_path, लंबाई, ऑफ़सेट); out.flush} ' –
समाधान के लिए धन्यवाद! हमने देखा है कि क्रोम में इस दृष्टिकोण को करने के क्रम में किसी को प्रतिक्रिया स्थिति को '206' पर स्पष्ट रूप से सेट करना होगा। –