{"id":9074,"date":"2016-03-29T20:50:57","date_gmt":"2016-03-29T17:50:57","guid":{"rendered":"http:\/\/blog.altoros.com\/?p=9074"},"modified":"2019-06-22T18:06:29","modified_gmt":"2019-06-22T15:06:29","slug":"video-streaming-in-bluemix-ustream-for-ibm-cloud","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/","title":{"rendered":"Video Streaming on Bluemix with Ustream for IBM Cloud"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#Main_steps\" >Main steps<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#Creating_the_application\" >Creating the application<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#Logging_in_to_the_Ustream_API\" >Logging in to the Ustream API<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#Uploading_a_video_file\" >Uploading a video file<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#Deploying_the_application_to_Bluemix\" >Deploying the application to Bluemix<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#Conclusion\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Main_steps\"><\/span>Main steps<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In the process, we use the <a href=\"https:\/\/cloud.ibm.com\/catalog\/services\/ustream\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ustream<\/a> service from the Bluemix catalog that provides functionality for embedding, managing, and storing video files. With its free account, you can publish up to 10 GB of videos.<\/p>\n<p>Basically, we will do the following:<\/p>\n<ol>\n<li>Create a web application<\/li>\n<li>Log in to the Ustream API (OAuth2) with Ruby<\/li>\n<li>Upload a video file using the Ustream flow (HTTP\u2014FTP)<\/li>\n<li>Deploy the application to Bluemix<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Creating_the_application\"><\/span>Creating the application<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When I can choose, I like using <a href=\"https:\/\/github.com\/soveran\/cuba\" target=\"_blank\" rel=\"noopener noreferrer\">Cuba<\/a>, a Ruby microframework for web development similar to Sinatra. It is extremely simple, and you can build a web application with a few lines of code.<\/p>\n<p>First, create the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">app.rb<\/code> and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">config.ru<\/code> files to start an empty Cuba application. Then, create the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">views\/<\/code> directory for views.<\/p>\n<pre style=\"padding-left: 30px;\">#=> emacs app.rb\r\nrequire 'cuba'\r\nrequire 'mote'\r\nrequire 'mote\/render'\r\n\r\nCuba.plugin Mote::Render\r\n\r\nCuba.define do\r\n  on root do\r\n  end\r\nend\r\n#=> mkdir views\/<\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Logging_in_to_the_Ustream_API\"><\/span>Logging in to the Ustream API<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To upload videos, we need to work with the Ustream API that uses OAuth2 as an authorization method. For logging in, make an HTTP POST request to the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">http:\/\/www.ustream.tv\/oauth2\/authorize<\/code> endpoint, setting the following parameters in the request:<\/p>\n<ul>\n<li><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">client_id<\/code><\/li>\n<li><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">redirect_uri<\/code><\/li>\n<li><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">response_type<\/code><\/li>\n<\/ul>\n<p>I&#8217;d like to keep things simple, so the main idea behind my toy application is to have a basic form for uploading  videos after login to Ustream. To do this, I\u2019m going to add a page with the link below:<\/p>\n<pre style=\"margin-bottom: 12px; padding-left: 20px;\">&lt;a href=\"http:\/\/www.ustream.tv\/oauth2\/authorize?client_id={{client_id}}&redirect_uri={{redirect_uri}}&response_type=token\"&gt;[ Login using Ustream ]&lt;\/a&gt;<\/pre>\n<p>You can see the entire file at <a href=\"https:\/\/github.com\/gramos\/video-streaming-bluemix\/blob\/master\/views\/index.mote#L34\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>. When users click the link, they are redirected to Ustream.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-ustream-service.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-ustream-service.png\" alt=\"ibm-bluemix-ustream-service\" width=\"640\" class=\"aligncenter size-full wp-image-9119\" \/><\/a><\/p>\n<p>After allowing the application to access the user&#8217;s Upstream account, the user is redirected to <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">redirect_uri<\/code>. Now, we are able to upload videos through the API using the token\u2014<code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">access_token<\/code>\u2014given in the response. In my example, you can see it as a parameter in the URL.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Uploading_a_video_file\"><\/span>Uploading a video file<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To upload a file to Ustream, I&#8217;m going to add a <a href=\"https:\/\/github.com\/gramos\/video-streaming-bluemix\/blob\/master\/views\/index.mote#L8\" target=\"_blank\" rel=\"noopener noreferrer\">form<\/a> with three text inputs\u2014<code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">channel_id<\/code>, <code style=\"color:#222222; background-color:#e6e6e6; padding:1px 2px;\">title<\/code>, and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">description<\/code>\u2014and one button for choosing a video file from a user computer.<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-with-ibm-bluemix-ustream.png\" alt=\"video-streaming-with-ibm-bluemix-ustream\" width=\"640\" class=\"aligncenter size-full wp-image-9120\" \/><\/center><\/p>\n<p>When a user selects the file, fills in the form fields, and clicks the <strong>Upload<\/strong> button, we need to start communication with the Ustream API. As described in the <a href=\"https:\/\/ibmcloud.ustream.tv\/dashboard\/api#APIFeaturesUploadVideos\" target=\"_blank\" rel=\"noopener noreferrer\">Ustream documentation<\/a>, the process includes the following steps:<\/p>\n<ol>\n<li style=\"margin-bottom: 12px\">\n<p>Initiate an upload process by making an API call.<\/p>\n<p>In the response, you can find the details of the FTP connect. We save the <a href=\"https:\/\/github.com\/gramos\/video-streaming-bluemix\/blob\/master\/app.rb#L32\" target=\"_blank\" rel=\"noopener noreferrer\">JSON response<\/a> with the FTP credentials and parse it.<\/p>\n<\/li>\n<li style=\"margin-bottom: 12px\">\n<p>Upload the video.<\/p>\n<p>Now we can <a href=\"https:\/\/github.com\/gramos\/video-streaming-bluemix\/blob\/master\/app.rb#L35\" target=\"_blank\" rel=\"noopener noreferrer\">start uploading<\/a> the video file using the credentials from the previous response.<\/p>\n<\/li>\n<li>When the upload is finished, send a <a href=\"https:\/\/github.com\/gramos\/video-streaming-bluemix\/blob\/master\/app.rb#L45\" target=\"_blank\" rel=\"noopener noreferrer\">signal<\/a> that tells to the Ustream server to start processing the file.<\/li>\n<\/ol>\n<p>The response came with HTTP status <code style=\"color: black; background-color: #e6e6e6;\">202 Accepted<\/code>. Everything seemed to be ok, but I made a request to see the video status, and it was pending forever. I also connected to FTP using the data returned in the response of the first request and saw that the uploaded file had only 1 KB, which was wrong.<\/p>\n<p>You can test the application at <a href=\"http:\/\/video-streaming.mybluemix.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/video-streaming.mybluemix.net\/<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Deploying_the_application_to_Bluemix\"><\/span>Deploying the application to Bluemix<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Check out the following articles that navigate you through the process of deploying a Ruby application:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.ibm.com\/developerworks\/cloud\/library\/cl-blograils-app\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">Build a Blog App with Ruby on Rails and Bluemix<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloudfoundry.org\/buildpacks\/ruby\/gsg-ruby.html\" target=\"_blank\" rel=\"noopener noreferrer\">Cloud Foundry Docs: Getting Started Deploying Ruby Apps<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bluemix works well for this simple application. However, using FTP in addition to HTTP for uploading videos does not seem to be the best choice since it means one more protocol with extra credentials. As for me, just HTTP would serve fine in this scenario. I also find the documentation related to integration between Bluemix and Ustream a bit confusing as well as would prefer to have more explanatory messages for the API errors.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/\">Continuous Integration and Continuous Delivery in IBM Bluemix<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/the-ibm-bluemix-object-storage-service-in-ruby-projects\/\">Using IBM Bluemix Object Storage in Ruby Projects<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/deploying-a-rails-5-app-with-mongodb-redis-and-carrierwave-to-ibm-bluemix\/\">Deploying a Rails 5 App with MongoDB, Redis, and CarrierWave to IBM Bluemix<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<hr\/>\n<p><center><small>The post is written by <a href=\"https:\/\/www.altoros.com\/blog\/author\/gaston-ramos\/\">Gast\u00f3n Ramos<\/a> and edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/viktoryia-fedzkovich\/\">Viktoria Fedzkovich<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Main steps<\/p>\n<p>In the process, we use the Ustream service from the Bluemix catalog that provides functionality for embedding, managing, and storing video files. With its free account, you can publish up to 10 GB of videos.<\/p>\n<p>Basically, we will do the following:<\/p>\n<p>Create a web application<br \/>\nLog in to the Ustream API (OAuth2) [&#8230;]<\/p>\n","protected":false},"author":65,"featured_media":27000,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,187],"class_list":["post-9074","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-ibm-bluemix"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Video Streaming on Bluemix with Ustream for IBM Cloud | Altoros<\/title>\n<meta name=\"description\" content=\"This tutorial shows how to develop a simple Ruby app that streams videos by using the Bluemix paltform from IBM.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Video Streaming on Bluemix with Ustream for IBM Cloud | Altoros\" \/>\n<meta property=\"og:description\" content=\"Main steps In the process, we use the Ustream service from the Bluemix catalog that provides functionality for embedding, managing, and storing video files. With its free account, you can publish up to 10 GB of videos. Basically, we will do the following: Create a web application Log in to the Ustream API (OAuth2) [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-29T17:50:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-22T15:06:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"751\" \/>\n\t<meta property=\"og:image:height\" content=\"458\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Gast\u00f3n Ramos\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gast\u00f3n Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/\",\"name\":\"Video Streaming on Bluemix with Ustream for IBM Cloud | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png\",\"datePublished\":\"2016-03-29T17:50:57+00:00\",\"dateModified\":\"2019-06-22T15:06:29+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3bfa3cc42526eb3e6a83df9d634e43f7\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png\",\"width\":751,\"height\":458},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Video Streaming on Bluemix with Ustream for IBM Cloud\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3bfa3cc42526eb3e6a83df9d634e43f7\",\"name\":\"Gast\u00f3n Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/85463eb4f2e4baa47ff7b07e41111397f7bb0edb3dbeb78985e2e7a2ff07a0ac?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/85463eb4f2e4baa47ff7b07e41111397f7bb0edb3dbeb78985e2e7a2ff07a0ac?s=96&d=mm&r=g\",\"caption\":\"Gast\u00f3n Ramos\"},\"description\":\"Gaston Ramos is a software engineer at Altoros. He specializes in Ruby on Rails as well as the Rack, Cuba, and Sinatra frameworks. Gaston started using Ruby in 2005. Since then, he enjoys a simple and clear style for writing software.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/gaston-ramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Video Streaming on Bluemix with Ustream for IBM Cloud | Altoros","description":"This tutorial shows how to develop a simple Ruby app that streams videos by using the Bluemix paltform from IBM.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/","og_locale":"en_US","og_type":"article","og_title":"Video Streaming on Bluemix with Ustream for IBM Cloud | Altoros","og_description":"Main steps In the process, we use the Ustream service from the Bluemix catalog that provides functionality for embedding, managing, and storing video files. With its free account, you can publish up to 10 GB of videos. Basically, we will do the following: Create a web application Log in to the Ustream API (OAuth2) [...]","og_url":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/","og_site_name":"Altoros","article_published_time":"2016-03-29T17:50:57+00:00","article_modified_time":"2019-06-22T15:06:29+00:00","og_image":[{"width":751,"height":458,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png","type":"image\/png"}],"author":"Gast\u00f3n Ramos","twitter_misc":{"Written by":"Gast\u00f3n Ramos","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/","url":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/","name":"Video Streaming on Bluemix with Ustream for IBM Cloud | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png","datePublished":"2016-03-29T17:50:57+00:00","dateModified":"2019-06-22T15:06:29+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3bfa3cc42526eb3e6a83df9d634e43f7"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/video-streaming-in-ibm-bluemix-using-ustream-1.png","width":751,"height":458},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/video-streaming-in-bluemix-ustream-for-ibm-cloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Video Streaming on Bluemix with Ustream for IBM Cloud"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3bfa3cc42526eb3e6a83df9d634e43f7","name":"Gast\u00f3n Ramos","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/85463eb4f2e4baa47ff7b07e41111397f7bb0edb3dbeb78985e2e7a2ff07a0ac?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/85463eb4f2e4baa47ff7b07e41111397f7bb0edb3dbeb78985e2e7a2ff07a0ac?s=96&d=mm&r=g","caption":"Gast\u00f3n Ramos"},"description":"Gaston Ramos is a software engineer at Altoros. He specializes in Ruby on Rails as well as the Rack, Cuba, and Sinatra frameworks. Gaston started using Ruby in 2005. Since then, he enjoys a simple and clear style for writing software.","url":"https:\/\/www.altoros.com\/blog\/author\/gaston-ramos\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/9074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=9074"}],"version-history":[{"count":12,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/9074\/revisions"}],"predecessor-version":[{"id":44613,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/9074\/revisions\/44613"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/27000"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=9074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=9074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=9074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}