9

Tôi đang cố gắng hiển thị video HTML5 trong ứng dụng Rails 3 của mình khi phát triển, tôi đang sử dụng Sqlite3 và máy chủ web mặc định (Webrick) .I đặt tệp video (movie.ogg) trong tài sản (asset/movie.ogg). Màn hình cửa sổ video hiện lên nhưng không có video trên đó. Tôi có 3 câu hỏi ... Vì tài sản ứng dụng đường ray không có thư mục con cho video (như cách nó có hình ảnh), bạn đặt tệp video ở đâu? Webrick có hỗ trợ video Html5 không? Đây là mã của tôi bên dưới, tôi thiếu gì ở đây, để làm cho video hoạt động?HTML5 VIDEO không hoạt động trong đường ray của tôi 3 ứng dụng

xem

 <video width="320" height="240" controls="controls"> 
     <source src="/assets/movie.mp4" type="video/mp4" /> 
     <source src="/assets/movie.ogg" type="video/ogg" /> 
     <source src="/assets/movie.webm" type="video/webm" /> 
     Your browser does not support the video tag. 
     </video> 

config/initializers/mime_types.rb

Rack::Mime::MIME_TYPES.merge!({ 
    ".ogg"  => "application/ogg", 
    ".ogx"  => "application/ogg", 
    ".ogv"  => "video/ogg", 
    ".oga"  => "audio/ogg", 
    ".mp4"  => "video/mp4", 
    ".m4v"  => "video/mp4", 
    ".mp3"  => "audio/mpeg", 
    ".m4a"  => "audio/mpeg" 
}) 

Trả lời

10

Trình trợ giúp video_tag tạo thẻ HTML 5 <video>.

Theo mặc định, các tệp được tải từ công khai/video. Để tải từ tài sản/video thêm dòng sau vào config/tập tin application.rb của bạn:

config.assets.paths << "#{Rails.root}/app/assets/videos" 

Tag Cách sử dụng:

<%= video_tag (["movie.mp4", "movie.ogg", "movie.webm"] :size => "320x240", :controls => true, :autobuffer => true) %> 
+0

Tôi có một mô hình được gọi là Video là thứ mà người dùng tạo nhưng tôi cũng cần có thể có video mà tôi đã nhúng trên trang web. Khi tôi tạo cấu hình này và sau đó sử dụng các video_tag ứng dụng đi qua các video_controller mà làm cho nó để tìm một đối tượng trong lớp Video với id = "movie" hoặc bất cứ điều gì là tên của tập tin video. Bất kỳ ý tưởng làm thế nào để làm việc xung quanh này? – wuliwong

2

Giả sử html của bạn là đúng, trừ khi mọi thứ đã thay đổi đáng kể trong đường ray 3.1 với bất cứ điều gì đường ống tài sản chứa trong thư mục công cộng có thể được phục vụ từ máy chủ web, vì vậy vị trí chính xác của nơi lưu trữ video tùy thuộc vào bạn. Theo các nguồn của bạn ở trên, bạn nên đặt video của mình ở chế độ công khai/tài sản sau đó xác nhận video đang được phân phát bằng cách truy cập http://localhost:3000/assets/movie.mp4 (hoặc bất kỳ url src nào khác cho video).

+0

Thanks.But trong thư mục Công khai, không có thư mục con tài sản nào? – katie

+0

Bạn cần phải tạo một thư mục mới có tên là tài sản ở nơi công cộng.Đường ray không đi kèm với các giá trị mặc định khác với hình ảnh, javascripts và bảng định kiểu. –

4

Đường dẫn nội dung được sử dụng cho nội dung tĩnh. Nếu bạn thường xuyên thêm tệp video vào ứng dụng của mình, bạn nên đặt chúng ở một nơi khác (ví dụ: public/videos hoặc public/system/videos). Nếu chúng thực sự là tài sản tĩnh, hãy thử khởi động lại máy chủ của bạn trước.

0

để phục vụ video là tài sản tĩnh trong Rails 4, cách tốt nhất là sử dụng thẻ video:

Đơn giản chỉ cần tạo một thư mục trong gọi là 'video' 'tài sản' và lưu trữ video của bạn có:

app/assets/videos/mycoolvideo.mp4 

Sau đó, trong quan điểm của bạn:

<%= video_tag "mycoolvideo.mp4" %> 

Nếu bạn cần phải xác định kích thước, hình ảnh poster hoặc thêm các điều khiển, thêm (nhưng điều này là HTML, không Rails):

<%= video_tag "mycoolvideo.mp4", width: "640", height: "480", poster: "mycoolvideo.jpg", controls: true %> 

Lưu ý rằng Rails khéo léo biết rằng hình ảnh nằm trong thư mục hình ảnh, do đó việc chỉ định tên là đủ, không thêm hình ảnh/hoặc nội dung/hình ảnh/trước tên hình ảnh.

Nếu bạn muốn vượt qua trong nhiều video (hay nói đúng hơn, cùng một video trong các định dạng khác nhau), vượt qua một mảng:

<%= video_tag ["mycoolvideo.mp4", "mycoolvideo.ogg", "mycoolvideo.webm"], size: "620x480", controls: true %> 

Lưu ý rằng đối với kích thước bạn có thể sử dụng kích thước: "WIDTHxHEIGHT" ("640x360") hoặc chiều cao riêng biệt: và chiều rộng:

Các vấn đề liên quan