Video unavailable when loading from Azure Video Indexer API - video-indexer

I am having problems with indexing a video, If I try to load a video with a URL from the Azure media service, Video Indexer throws error and abruptly fails indexing with error message "Video Unavailable", this happens if I load it with the API or directly in videoindexer.ai, does anyone have any idea how I can fix this problem?

Video Indexer (VI) expect to have a direct URL for the video itself. So, when you put the URL in your browser the video should start download/play
Can you please elaborate more about how you generate the URL in Azure Media Services (AMS)? For example, are you using a ClearStreamingOnly or DownloadAndClearStremaing locator AMS Streaming Locators?
You should be using the DownloadAndClearStremaing and use the generated video download URL.
Another option will be, as you already have your video in AMS, then it is saved in the AMS linked storage, you can generate a SAS Url for the video file and give that to VI to index.

Related

Youtube-dl (Forbidden 403 error, not a common solution)

I am using youtube-dl for downloading videos from youtube mostly. It is latest version on my Mac.
This time I wanted to download some video presentation from conference I am participating. They are using zoom client in Chrome browser.
I am not able to download video with presentation
I used the following steps:
There are two video streams on the same webpage (one for presenter, one for presentation material)
youtube-dl captures only first part with presenter view.
There are no other information from json file about second video (no playlist, no other ids).
I used another software to download a video (VideoDuke).
It shows that there are two videos with different size (presenter and presentation).
I am forbidden to download both of them (youtube-dl could download the first one, by use original URL).
I can copy video address from VideoDuke and use it for youtube-dl.
I receive error "Forbidden 403" with youtube-dl on both of videos (different links from original URL).
--rm-cache-dir does not help.
if I use --verbose on original URL, I can see that it is invoking downloader on the first video with the same URL the VideoDuke produced, and it can download the file.
Is it possible to invoke downloader on the second URL provided by VideoDuke. I can also get similar URL from inspector in Google Chrome.
Last year I participated in the same conference and the original URL was similar, although that time there were some true/false statements I could tweak and download exactly the presentation video, and not the presenter. This year, that option disappeared.

Not able to present Google user image insde Google workspace addon

I'm working on a Google Workspace Addon using TS & Express.
When trying to display an image coming from my CDN, I see that google caches/proxies it via its own URL
i.e
https://www.lorempixel.com/400/400
turns into
https://ci3.googleusercontent.com/proxy/1A6QM0...bvtAcYz6o8U7e622Nu7Uq4=s40
But when trying to present an image that's coming from Google (i.e google account image), it's not proxied, and the actual URL is passed, with just a =s40 suffix to it.
i.e
https://lh3.googleusercontent.com/a-/AOh1...%3Ds96-c
turns into
https://lh3.googleusercontent.com/a-/AOh1...%3Ds96-c=s40
which breaks the URL and presents a broken image...
was wondering if anyone encountered this?
and if i can save the user's google image as a profile image in the first place?

Streaming videos from AWS to Moodle Mobile App

I would like to know if it is possible to stream MediaTailor content on the Moodle Mobile App?
I have tested it out on our Moodle website and it works perfectly fine. However, streaming the content on the Moodle Mobile App does not work. Is there any way in which I can stream content using a MediaTailor URL?
Update:
I was able to emulate this issue in the browser and the following error was displayed on my console:
Uncaught TypeError: Cannot read property 'techOrder' of undefined
at HTMLVideoElement.<anonymous> (first.js:306)
at Function.each (jquery-3.4.1.min.js:2)
at k.fn.init.each (jquery-3.4.1.min.js:2)
at t (first.js:306)
at Object.s [as setUp] (first.js:306)
at view.php?id=41359:3335
at Object.execCb (require.min.js:5)
at b.check (require.min.js:5)
at b.enable (require.min.js:5)
at b.init (require.min.js:5)
This is a known issue that is currently not resolved.
Are you able to stream any DASH or HLS content or is it just the ads coming from MediaTailor that fail to stream? If it does work with other content, there may be an issue with that the app can't handle discontinuities between main content and ads. I would recommend looking at the device logs, if there are any, to see what the player is erroring out on. In addition, I would recommend reviewing the below article from Moodle for creating mobile-friendly courses as well as the articles for debugging your app from Android Developers:
https://docs.moodle.org/310/en/Creating_mobile-friendly_courses
https://developer.android.com/studio/debug
https://developer.android.com/studio/command-line/adb

Hosting video on Amazon S3 with flexibility to stream or download

I am working on an application where some videos are uploaded to Amazon S3.
Now a user can choose to download the video or stream it.
The public url on amazon s3 is say "amazons3.com/test/file.mp4".
As of now, everytime I visit the url, it streams the video.
How to I append parameters to the url so that the video can be streamed or dowloaded.
Basically, original url should stream the video, and modified_url should download it.
Thank you!
I found a very easy way.
In the html file, instead of
Download
I used
Download
Reference: href image link download on click

Add video to timeline from GDK or Add "Share" to live card

I'm using the GDK with XE16
I would like to save a video using MediaRecorder and then put it on the Timeline so I can let the user share the video to Gplus, YouTube or any contact. I am providing some additional information during the recording process as an overlay on the video preview.
I am able to save the videos into the /mnt/sdcard/Movies path. I am invoking the Intent.ACTION_MEDIA_SCANNER_SCAN_FILE to add the recorded video to the media database.
I have not been able to figure out how to add a share intent to on livecard. The previous API supported static cards, but those did not support video attachments; and the API is no longer available. I have also tried to use AccountManager and the com.google account in Glass to get an ouath token for the Mirror api to write direction via oauth2:https://www.googleapis.com/auth/glass.timeline. The authorization request shows up, but it is impossible for the user to accept the request.
I've considered sending the video file back to a proxy server that will then call mirror, but this seems like a big round trip for nothing.
I suppose I could send the credentials through this proxy, but this seems like a security nightmare.
The difference between Static Cards and a Timeline Item were large enough that the team, apparently, removed Static Cards until they could make the two of them work much more similarly. What you're trying to do is a commonly requested, and it does make sense that both should work mostly the same way.
You're on the right track for how to handle this at the moment - use the Mirror API to get it into the timeline as a Timeline Item. As you've noticed, you can't go through the auth flow since the user is unable to authenticate through Glass directly.
While you're testing, you can code in an auth token and a refresh token to be provided to the library to do this. For production through MyGlass, take a look at the auth flow that is available at https://developers.google.com/glass/develop/gdk/authentication