From 3dbd30bfb5f98cc7273de32c389647490913b3ab Mon Sep 17 00:00:00 2001 From: Phuong Dinh Date: Wed, 21 Oct 2020 11:58:11 -0400 Subject: [PATCH] Add adaptive streaming --- app/controllers/items_controller.rb | 8 +++++++- app/views/items/adaptive.erb | 5 +++++ app/views/items/show.html.erb | 1 + config/routes.rb | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 app/views/items/adaptive.erb diff --git a/app/controllers/items_controller.rb b/app/controllers/items_controller.rb index 1a9b5ef..8eb5582 100644 --- a/app/controllers/items_controller.rb +++ b/app/controllers/items_controller.rb @@ -1,5 +1,5 @@ class ItemsController < ApplicationController - before_action :set_item, only: [:show, :edit, :update, :destroy] + before_action :set_item, only: [:show, :edit, :update, :destroy, :adaptive] before_action :require_login, except: [:index, :authorize] def require_login @@ -81,6 +81,12 @@ def authorize end end + # GET /items/1/adaptive.m3u8 + def adaptive + @streams = @item.streams + render layout: false, content_type: 'text/plain' + end + private # Use callbacks to share common setup or constraints between actions. def set_item diff --git a/app/views/items/adaptive.erb b/app/views/items/adaptive.erb new file mode 100644 index 0000000..f0a3777 --- /dev/null +++ b/app/views/items/adaptive.erb @@ -0,0 +1,5 @@ +#EXTM3U +<% @streams.each do |stream| %> +#EXT-X-STREAM-INF:BANDWIDTH=<%= stream["bitrate"] %> +<%= stream["url"] + "?token=" + session[:token]%> +<% end %> \ No newline at end of file diff --git a/app/views/items/show.html.erb b/app/views/items/show.html.erb index 2459d74..465817f 100644 --- a/app/views/items/show.html.erb +++ b/app/views/items/show.html.erb @@ -22,6 +22,7 @@ controls preload="auto" > + " type="application/x-mpegURL" label="auto"/> <% @item.streams.each do |stream| %> ?token=<%= session[:token] %>" type="application/x-mpegURL" label="<%= stream["label"] %>"/> <% end %> diff --git a/config/routes.rb b/config/routes.rb index c37c7c6..86e9db1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,6 +3,9 @@ collection do get :authorize end + member do + match 'adaptive', to: 'items#adaptive', via: [:get] + end end devise_for :users root to: "items#index"