Upload MP4 on Azure Storage ready for pseudostreaming - azure

I am building a video service application using the UWP Platform from which the users can upload and watch videos. I am using Azure Storage as the back-end.
Here is the use scenario:
User captures a video using the CaptureElement class as MP4.
He uploads it to Azure Storage as a video/mp4 block blob.
Other users can watch the video using MediaElement class. The source is set to the .mp4 blob.
The video file is downloaded locally in order to be played by the MediaElement.
BUT, I want to make it available even when the download is not fully completed.
After a bit of research, I found QTIndexSwapper, ffmpeg -movflags faststart and qt-faststart which put the metadata of the MP4 File before the data so the streaming is possible.
Here is an MP4 video which has its metadata at start
and here is one which has it at the end
The MediaElement has the same behavior as the web player.
What's the best way to achieve it in UWP app or on Azure?
Can Smooth Streaming Client SDK Extension help?
What about running a WebJob or something similar as long as the video gets uploaded on Azure Storage to move the metadata?
Thanks for your time,
George

I ended up using qt-faststart tool from ffmpeg repo.
I created a modified version of that code as a Windows Runtime Component and used it in my project. It works perfectly.
Here is a blog post I wrote about it Create ready to be streamed over the web videos in UWP Applications
Hope it helps someone!

Related

How to do Azure Video Watermarking / Overlay

Can anyone please guide me, step by step how to watermark/Overlay a video in Azure as I am new to Azure. If Possible please guide me with a tutorial or Video tutorial for the same. I have uploaded a .mp4 video in Azure and streamed it and able to view it in azure media player. Please guide me for watermarking or overlaying a video in azure.
Also I need to understand, azure is providing watermarking / overlay as a service so is there a way to do water marking directly with an Azure interface without visual studio C# coding.
Thanks in advance..
Do you need to overlay an image onto a video? Or do you want to overlay a video over another video? For the former case, the image will have to overlaid on the input video during the encoding process. There is a basic example documented here. In that example, the output contains a single MP4 at 640x360 resolution, which is sufficient for delivery via progressive download. Since you need to stream your video, you should update the Codecs section in that example with additional video bitrates - such as the one showed here.
You also mention needing to do this without writing code. If you have a PC, then you can install and run AMS Explorer (https://aka.ms/amse). Browse to the input video you want to process, hit "Ctl+R" and you will see tabs to specify the encoding settings, and others for advanced features including overlays.

Facebook Video share using Azure media Service encoded streaming endpoints

I am building a video library on Azure Media Service and want to give feature where my streaming endpoint(like manifest hls/Dashed/smooth streaming urls urls) can be shareable on Facebook like how YouTube URL works on Facebook share,
i am not sure, is this possible or not?? if yes than which encoding format i need to use here, i tried different encoding here but they didn't work for me,
if above cant be done than whats the best alternate
The steps you need are:
Upload the source video (https://learn.microsoft.com/en-us/azure/media-services/media-services-dotnet-upload-files)
Encode it to a format that supports streaming, using Standard Encoder using a preset like "Content Adaptive Multiple Bitrate MP4" (https://learn.microsoft.com/en-us/azure/media-services/media-services-dotnet-encode-with-media-encoder-standard)
Above will produce an output Asset containing multiple MP4 files
Publish this output Asset (https://learn.microsoft.com/en-us/azure/media-services/media-services-deliver-streaming-content)
You can now use the streaming locator that step 4 generatesin Azure Media Player (http://aka.ms/amsplayer)
However, before you can share links on Facebook, you need to stand up another web service - I've let my colleague know about this thread, and she will follow up shortly.

How do I use Azure Media Services to Dynamically Encode Videos to MP4 using Azure Blob

I am currently using Azure Blob to store images, and it works great. For a new product I am working on, we are starting to integrate videos. We decided to use Azure Blob to store our videos, and it works great.
We also are saving meta data to the images and videos, and using the Azure Search Service to index the images, and videos, to allow for ease of searching in the new product.
The new problem we are experiencing is the mass amount of file formats being found for upload, are not playing in all devices, and browsers we need to support.
We looked in to Azure Media Services, and found if we encode the videos as H.264 MP4 SD 16x9 using Azure Media Player, it will work in all devices. However, we are now trying to identify how we can easily, and without adding much more time to the user, have the video converted and bound to our search results, to allow for a download link (original video) and play link (converted video).
If anyone knows of a solution, or has a different conversion service that could help, it would be appreciated.
Thank You!

How to increase upload speed to azure media services from local system?

I am uploading videos from local system to azure media services. When uploading video with low size, it is uploading successfully. When I try to upload somewhat large size videos(100 MB like that), it takes more time and sometimes pages is not responding. But the video is uploaded to AMS.
Honestly, I end up using the Server Explorer tool in Visual Studio to connect and upload that way. I've found it to be the fastest and most stable way of doing this.
Here is a video tutorial on how to do that. If you'd like more info from the docs, you can find that here.

Microsoft Smooth Streaming on demand without a web server

I'm building a mobile app and the app streams videos using ExoPlayer for Android. My idea is to use smooth streaming for streaming media files.
The app will only stream videos clips that I upload to Amazon S3 bucket myself so I do not need real time encoding or anything.
I'm using Microsoft Expression Encoder 4 to encode my media files.
So my idea is to encode media files manually on my local computer and upload them to S3 bucket and serve via CloudFront.
I have figured out that .ismc file contains manifest details.
Would this really work?
Alright, I found an answer! This tutorial explains it all.
http://howto-phpjsjqueryawss3ec2cloudfrontfacebooktwittergoogleawsapis.com/how-to-smooth-stream-microsoft-smooth-streaming-files-on-amazon-cloudfront-without-a-web-server/

Resources