Community Thread: Converting Video

  • 1
  • Announcement
  • Updated 2 years ago
Hi Community,

To begin building a community-focused public knowledge base, we have decided to start a thread about tools and tricks when working on converting video formats for the Rise Video Widget. Feel free to join in and share your process here for the other Community members!
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb

Posted 3 years ago

  • 1
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb
For me, I usually first find out if it’s an MP4 or a WebM and I also need to find the size of the video. The reason why knowing about the format is that MP4 and WebM are supported. Now let's say you suspect that a video may be too large and that it may be portioned or further compressed.

If you are using the Rise Chrome App player, then the Chrome browser has a specific cache limit. If the video is large, it will skip being downloaded by Rise Cache and you will not even be able to play that video on the Display. Therefore the recommendation is to either have the video linked via a third party server, to break up the video into smaller parts or to further compress that video.

If you want to get the specific details or if you want to check before portioning or further compressing a large video, then what you can do is to:

  1. In Chrome, go to chrome://inspect/#apps this is the place to go to start inspecting what goes on behind the scenes for the Rise Player

  2. Run the Presentation on Player on the live Display (this can be a test Display if you have one)

  3. Slightly tricky - try to get back to desktop without closing Player, then go to Inspect and then click to Inspect the Player

  4. I usually look at Network and Console. In Console you should see the message along the lines of ”requested file size [FILE SIZE HERE] is greater than available space [SIZE OF AVAILABLE SPACE HERE]. Skipping download."

This means that the video that you are trying to add to the presentation is too large, and that download has been skipped.
Photo of Robert Bisconti

Robert Bisconti

  • 322 Points 250 badge 2x thumb
What is the size limitation?
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb
Hi Rob,
We don't really advertise size limitations. If the video is proven to be too large, you may need to portion it, or further look into working with code.  As an example there was a presentation that absolutely required it to be externally hosted, in MP4 and longform (more than 1 hour!) so I ended up switching them to the HTML Widget and displaying the video via <video> tags with the video externally linking to their media server.
Photo of Robb

Robb, Official Rep

  • 76,676 Points 50k badge 2x thumb

Here's what I like in regards to converting/encoding videos: 

There are a LOT of different video converters/encoders out there that work to varying degrees, and there are even more people out there who aren’t familiar with converting and encoding at all.

That’s where a video converter/encoder that is super easy, cross platform, and all browser based comes in really handy. This browser based encoder is only available for Firefox, and is called Firefogg.

The first thing you will need is a video that is in a different format than WebM, for example, MP4. Next, open Firefox, and go to https://Firefogg.org. When you arrive there, you’ll notice that you get the option to “Install Firefogg”:


Go through the installation process to get the Firefogg plugin set up in your Firefox browser. Once Firefogg is running, you’ll see it shows as Installed, and you have the option to “Make web video”:


Select Make web video, and then select the MP4 video that you want to encode as WebM. What’s really cool about Firefogg, is it will show you important details about your video, including the resolution, file size, and video length:

You can also select the format to encode the new video to (which should always be WebM (VP8/Vorbis)), and the preset for the video quality. If the Display is going to be on a slower network, or if the resolution of the monitor the Presentation is playing on is low, you can select a lower quality preset. In most cases, if you want the WebM to be the same quality as the MP4, just leave these settings at their defaults:

You will be asked where to store the video on your local machine, and then the encoding process will begin. You will see a detailed rundown of the process and time remaining in the video encode. Once completed, the video will show in your browser, giving you a chance to play it to make sure all looks good:



Once that is completed, upload that WebM video to your Rise Vision Storage repository, and you are good to go!
Photo of Robert Schoneman

Robert Schoneman, Champion

  • 4,990 Points 4k badge 2x thumb
We have a somewhat complex workflow for our videos, as they come from a variety of inputs, and use Amazon Elastic Transcoding with an automated Lambda script to manage ingest and output notifications. I'm happy to provide the scripts and explain it all if there's any interest but I'd hate to bog down the forums with needless complexity. 
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb
I'm interested!
Photo of Robert Schoneman

Robert Schoneman, Champion

  • 4,990 Points 4k badge 2x thumb
As requested...

We're using Amazon Web Services for the following services:
  • S3 (Simple Storage Service): file storage
  • ETS (Elastic Transcoder): transcoding of media assets
  • Lambda: on-demand code run in response to various events
  • SNS (Simple Notification Service): sends emails when files are uploaded, and status of transcode jobs
Here's the process:
  1. Either the client (only those who we work with regularly and have a content department/person) or one of our staff will upload the videos to be transcoded into a bucket on S3 called "bpa-ds-encodeinput". 
  2. The "bpa-ds-encodeinput" bucket is configured for Event Notifications which sends a notice on "Object Created (All)" to a Lambda function called "startETSJob". This bucket is also configured for Lifecycle management and automatically deletes the files two (2) days after creation. We keep them for two days just in case there's an encoding issue or we need to compare to the original file for any reason. 
  3. "startETSJob" is a Lambda function written in Node.js. This script starts an ETS job using our encode pipeline called "bpa-ds-encode" using a preset called "WebM 1080p". Once the job is started, it uses SNS to send an email to our digital signage user group to inform them that an encode job has begun and the name of the file being encoded. 
  4. Once the encode job is complete, the ETS service writes the file to an S3 bucket called "bpa-ds-encodeoutput". This bucket is also configured for Event Notifications and Lifecycle management. The Event Notification is issued when any file is created in the bucket and calls a Lambda function called "snsNotificationJobCompletion". This Lambda script simply sends an email to the user group with a public S3 link to the complete file. The Lifecycle management deletes files in this bucket after 30 days from the date of creation. 
  5. Our staff can then just paste the link to a presentation, click publish and away we go. 
I know that all sounds complex but the setup only took an afternoon and it frees our staff from being tied to encode jobs on their desktop computers along with the time of downloading the source file, encoding it, uploading it, etc. We also transcode ALL video regardless of format or size just to be sure we have a clean source file to playback. 

Here are the various pieces of the puzzle. 

startETSJob
var AWS = require('aws-sdk');  var util = require('util');

AWS.config.region = 'us-east-1';


exports.handler = function(event, context) {  
    console.log("\n\nLoading handler\n\n");
    
// Get reference to SNS client 
var sns = new AWS.SNS();
var ets = new AWS.ElasticTranscoder();

// Read options from the event.
    console.log("Reading options from event:\n", util.inspect(event, {depth: 5}));
    var srcBucket = event.Records[0].s3.bucket.name;
    var srcKey    = decodeURI(event.Records[0].s3.object.key);
    srcKey =srcKey.replace(new RegExp("\\+","g"), ' ');
    
var outPutKey = (srcKey.split("."))[0];


var pipelineId = '1447901982597-01xufa';
var presetId = '1447902362412-0b81s3';
    
    console.log("Creating Transcoding job for file named: " + srcKey);
    ets.createJob({ 
 PipelineId: pipelineId,  
 Input: { 
Key: srcKey, 
Resolution: 'auto', 
AspectRatio: 'auto', 
Interlaced: 'auto', 
Container: 'auto' 
}, 
 Output: { 
Key: outPutKey + '.webm', 
PresetId: presetId, 
Rotate: 'auto' 

 
}, function(err, data) { 
            if (err) {
                console.log(err.stack);
                return;
            }
            console.log(data);
});


    sns.publish({
        Message: 'The transcoding job for ' +  srcKey + ' has started successfully. You will receive another email when the job has completed.',
        TopicArn: 'arn:aws:sns:us-east-1:881557733892:ets-job-started-email-note'
        }, function(err, data) {
            if (err) {
                console.log(err.stack);
                return;
            }
            console.log(data);
            context.done(null, 'Notification pushed & function ends here!');  
    });
    

};


snsNotificationJobCompletion
var AWS = require('aws-sdk');  var util = require('util');

AWS.config.region = 'us-east-1';

exports.handler = function(event, context) {  
    console.log("\n\nLoading handler\n\n");
    
// Get reference to SNS client 
var sns = new AWS.SNS();

// Read options from the event.
    console.log("Reading options from event:\n", util.inspect(event, {depth: 5}));
    var srcBucket = event.Records[0].s3.bucket.name;
    var srcKey    = event.Records[0].s3.object.key;


    sns.publish({
        Message: 'The transcoding job for ' +  srcKey + ' has completed successfully. The file is located at http://' + srcBucket + '.s3.amazonaws.com/' + srcKey,
        TopicArn: 'arn:aws:sns:us-east-1:881557733892:ets-job-completed-email-note'
    }, function(err, data) {
        if (err) {
            console.log(err.stack);
            return;
        }
        console.log(data);
        context.done(null, 'Notification pushed & function ends here!');  
    });
};


ETS Video Preset Information
Codec: vp8
Codec Options: Profile:0
Maximum Number of Frames Between Keyframes: 90
Fixed Number of Frames Between Keyframes: false
Bit Rate: 2400
Frame Rate: 60
Video Max Frame Rate: 
Max Width: 1920
Max Height: 1080
Sizing Policy: Fit
Padding Policy: Pad
Display Aspect Ratio: auto

ETS Audio Preset Information
Codec: vorbis
Codec Options
Sample Rate: 44100
Bit Rate: 160
Channels: 2
Audio Packing Mode
Photo of Darius - PRODO.us

Darius - PRODO.us, Champion

  • 26,850 Points 20k badge 2x thumb
I am working with Adobe CC 2015 which has that Media Encoder App. It is very simple, easy to use and it works like a charm. I have little understanding about different video formats, encoding and all that. Media Encoder takes care of all my needs when it comes to motion graphics such as videos or animated GIFS or SWF's. Basically I just add a file and say what I need from it on the other end... done. Works every time
(Edited)
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb
I've been using Adobe products for a long time, including Premiere when I was content-based.  Adobe CC is really quiet robust.

For anyone looking for a lite version of Adobe Premiere (both in features and budget) they have Premiere Elements also available which I have used http://www.adobe.com/products/premiere-elements.html
Photo of Ashleigh

Ashleigh

  • 3,740 Points 3k badge 2x thumb
You can convert your videos via the command line by installing FFmpeg. If you need more in-depth instruction, take a look at this link. It is great for retaining quality. 
Photo of Robert Schoneman

Robert Schoneman, Champion

  • 4,990 Points 4k badge 2x thumb
And if you like the FFmpeg engine, Miro Video Converter is a nice GUI for it. You lose some flexibility but most of the common options are there. Quality is still good. 
Photo of Thierry Masson

Thierry Masson, Champion

  • 2,356 Points 2k badge 2x thumb
With Avast antivirus engine, Miro is considered as containing Spyware/malware/adware and it is true that with a personal firewall, there is a suspicious traffic.
I prefer to use Format Factory that is very nice.
 
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb
Would like to try our Miro also.  I had the same message where the .dmg to download is hosted on http://ftp.osuosl.org/ - just emailed their Support.
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb
Safe URL seems to start at http://www.getmiro.com/ which leads to PayPal to donate (when you choose any of the "Give" donation options) which is fair enough as they are part of the Participatory Culture Foundation, a 501c3 non-profit organization
Photo of Blake Freeman

Blake Freeman, Official Rep

  • 36,116 Points 20k badge 2x thumb
Does anyone have any experience with using Handbrake to convert videos for use with Rise Vision?
Photo of Thierry Masson

Thierry Masson, Champion

  • 2,356 Points 2k badge 2x thumb
I use Format Factory to convert videos from time to time.
Note that based on my experience, VLC, a famous tool for video playback and management,  can convert in MP4 but such are not correctly played back on Chrome OS (at least it was the case a few months ago).  I don't use WebM format because in general, the videos are also shared for Intranet and Internet and WebM is not supported on various browers (Safari, IE, ...). See http://caniuse.com/#feat=webm .


For Signage, we use a cloud DAM (Digital Asset Management System) that is http://www.keepeek.com . It is used by mycompany for Internet, Intranet, Signage and external press relationship.

It is an interesting platform allowing you to manage all your digital assets. The great thing is that from a parent media, the solution may create automatically various sub-format. For instance, we use to upload WMV videos produced by PowerPoint and the solution allows the creation of a child MP4 videos compatible with the Rise player. We have recently ask a custom development but it will be released in a next version for all tenants. Such development is a multi-media gallery. You drag&drop media for almost any format mixing videos and images in a folder and get a unique URL for that forlder that start a slideshow mixing videos and images. A few parameters are allowed to set the image duration and the media order in the slideshow.
  
Photo of HSuarez

HSuarez

  • 11,896 Points 10k badge 2x thumb
I found this page maintained by a home theatre software company offering various samples of test clips and this page offering a table of information as to whether or not the media formats work on their media player along with useful notes.  I am wondering if these types of samples and/or a table of media formats would be of interest to the Community?  
Photo of Robert Schoneman

Robert Schoneman, Champion

  • 4,990 Points 4k badge 2x thumb
I think it would be illustrative, if you're willing to put in the time. The real question is, what to use as the source samples. Digital Signage isn't like Home Theater where content is concerned. We don't care as much about block artifacting and such as our viewers aren't stationary and they're typically only viewing for brief periods of time. So I think one key would be to start off with a very high quality 1080p60 source file that's representative of the kind of video we work with (high impact text, images that move/slide/rotate, rendered motion graphics that tend to constrain the movement to a particular area for eye draw). 

Also, it'd be interesting to explore how downsampling the files to lower resolutions can help save file size. Oh and if you can get some feedback from anyone on the WebM team about what the "Profile" setting on VP8 (WebM) does. They describe it thusly:

This parameter sets the encoder profile. For non-zero values the encoder increasingly optimizes for reduced complexity playback on low powered devices at the expense of encode quality. For example using 1 tells the encoder only to use only bi-linear sub pixel filtering and a simplified loop filter. In general most users will want to set a value of 0 or ignore this parameter unless they are encoding high resolution content and require playback on very low power devices.
We use Profile 0 and it works well but with some testing it might be possible to find extra capacity in some of the lower-powered playback devices using this switch?
Photo of Brian Stokes

Brian Stokes

  • 310 Points 250 badge 2x thumb
If anyone want to transcode to WebM through Premiere, check out this free plugin for Adobe Premiere. http://www.fnordware.com/WebM/
I have been using it and it works great. I use Handbrake which is also free for MP4 (h.264) files but have not used them in RiseVision yet. Should work fine.
Photo of Brian Stokes

Brian Stokes

  • 310 Points 250 badge 2x thumb
Kind of the same thing. If someone is already working in Premiere they can just export it out. I will usually export a ProRes file first then use AME to transcode. But yeah, don't really need Premiere unless you are transcoding from your edits and not exporting a master file.
Photo of Darius - PRODO.us

Darius - PRODO.us, Champion

  • 26,850 Points 20k badge 2x thumb
Agreed, but my point was if you are like me, who never use Premier and are not really familiar with it, but still have Adobe Creative Suite installed, then Adobe Media Encoder is the App to use with his plug-in. It works really well and I literally had '0' issues in Rise Vision with the files converted using this Adobe App.
Photo of Brian Stokes

Brian Stokes

  • 310 Points 250 badge 2x thumb
No worries i hear what you're saying. You had just mentioned that is it far less complicated to use but in fact they are really similar. You basically can drag a file into either application and choose your settings. AME is great because you can do batch transcodes to various formats based on your presets, etc. All good though.

We are having issues with RiseVision for whatever reason, not from transcodes, but from either outdated players or a combination of hardware/software. Not sure right now, working with RiseVision to solve it. I thought it might be a Mac/WebM thing but our MP4/H.264 files are stalling players, playing black, and just not working for the most part. I'm just the graphic/video guy so hopefully have a fix soon.
Photo of Darius - PRODO.us

Darius - PRODO.us, Champion

  • 26,850 Points 20k badge 2x thumb
I am not a tech/IT guy myself; I am just a graphic designer. What players are you using? Although, we initially had plenty of issues with the stability of our players; however, lately they have been performing very well. My Intel NUC Pentium with Windows 10 has been pretty awesome. I am liking the new Intel Compute Stick; the old one not so much. Anyways, based on my experience, Windows 10 is the way to go for the ease of setting up/stability/functionality/performance/options combination.
Photo of Brian Stokes

Brian Stokes

  • 310 Points 250 badge 2x thumb
Yeah, me too. Graphic design with a background in video production and photography as well. The techy part of the whole linux/windows/browser/player version is a bit much for me because i have been on Macs for 20 years or so. But i think we just sort of solved it by updating some of the players here along with a few other things. I don't do any of the Displays or Presentations, etc. I just send my file to another person in our office and they handle Rise Vision. So i am pretty new to Rise Vision. I need to learn more but just too slammed with other work. Looks like whatever they did is somewhat working better now. I thought it was more of a codec/transcode problem since images were working ok but video wasn't. Turns out from Robb at RV that we had outdated players and they did the whole upgrade thing. Looks like its working better so far. Haha, we will see. But thanks for the info.
Photo of Robb

Robb, Official Rep

  • 76,676 Points 50k badge 2x thumb
Brian, if you're ever inclined to write a simple how to for MP4's in Handbrake, we'd love to see it!
Photo of Brian Stokes

Brian Stokes

  • 310 Points 250 badge 2x thumb
Robb, I guess i have already gone through this thread and replied. Maybe once i get our files working better after the upgrade or whatever our IT department figures out, i can get the writeup for Handbrake for those who don't know how to transcode video, etc.