Mamy problemy z obsługą mp4, które będą odtwarzane na iPadzie przy użyciu domyślnej aplikacji rails 3. Mp4 wyświetla się poprawnie podczas przeglądania trasy w chrome i innych przeglądarkach na pulpicie.Jaki jest właściwy sposób udostępniania plików MP4 przez szyny na Ipad?
Oto nasz kod:
file_path = File.join(Rails.root, 'test.mp4')
send_file(file_path, :disposition => "inline", :type => "video/mp4")
Trafiliśmy 0.0.0.0:3000/video/test.mp4 aby obejrzeć film i są przedstawiane z nie może grać ikonę na iPada. Próbowaliśmy zmodyfikować różne nagłówki "Content-Length", "Content-Range", itp., Ale nie wpływają one na końcowy efekt.
Mamy również spróbował wykorzystać send_data do pewnego stopnia
tj
File.open(file_path, "r") do |f|
send_data f.read, :type => "video/mp4"
end
ten sam film służy dobrze z folderu publicznego, gdy patrzy się na iPadzie.
Jaki jest właściwy sposób udostępniania plików MP4 przez szyny do iPada?
Myślę, że w kodzie występuje błąd bariery. Wierzę, że długość powinna wynosić "bajtów.end - bajtów.begin + 1" - jeśli zakres bajtów jest od bajtu od 10 do 12, powinno to być 3 bajty. Ponadto, jeśli używasz 'send_data' z jakiegoś powodu, upewnij się, że ustawiłeś' Content-Length' w nagłówkach odpowiedzi. – tovodeverett
Dziękuję za to rozwiązanie! Dodałem poprawki oparte na komentarzu @tovodeverett. Używając Sinatry (zamiast Railsów) do programowania, udało mi się replikować zachowanie send_data za pomocą sinatra/streaming contrib w następujący sposób: 'stream {| out | out.write IO.binread (ścieżka pliku, długość, przesunięcie); out.flush} ' –
Dzięki za rozwiązanie! Zauważyliśmy, że aby to podejście działało w Chrome, trzeba jawnie ustawić status odpowiedzi na "206". –