how to play youtube videos in flutter - flutter

I'm trying to play YouTube Videos in my Flutter Web Application, but with the default VideoPlayer you need the YouTube src path (...googlevideos.com/...), which I couldn't get right.
I did some google research and I found the following packages:
https://pub.dev/packages/youtube_player_flutter
https://pub.dev/packages/chewie
But both of them won't play direct YouTube links, and the first one isn't supported for Flutter-Web.
Does anyone have experience with this topic or knows how to get the YouTube source links (for example with an API) ?

Did you try this package: youtube_player_iframe: ^2.3.0
find it here https://pub.dev/packages/youtube_player_iframe

EDIT1: YouTube seems to shuffle the source video file url every day, so using the source file url is not a viable solution. Another option is to add the video to your project locally and add an overlay "YouTube" button on top of the video and when the user taps it he is taken to the video on YouTube. Downside to using asset video though is the fact that you are unable to adjust the progress bar (at least in version 2.4.5).
You can use the official video_player package and get the source file path to YouTube video file by using VLC media player by following these steps:
Find a video on YouTube and copy the URL from the address bar.
In VLC, head to Media > Open Network Stream.
Paste the YouTube link in the box and click Play.
Under Tools, click Codec Information.
In the box that says Location, right-click the block of text and click Select All. This is the url to your local video file.
These steps are almost a copy / paste found from here: How to obtain the direct link to a YouTube video file
You can also use the youtube_player_iframe package, but note that if you hover on top of the video when using that player, you are unable to scroll your content and there seems to be no workaround as discussed in here: Mouse scroll stuck while cursor is on top of youtube_player_iframe. That's the only reason why I decided to use the official video player package.

Related

How to add multiple youtube playlist with video in my flutter app?

I need to add Youtube playlist with Youtube player in my flutter application.And i want to add multiple playlist. When i will upload video to youtube then autometically will have to appears on my flutter app.
I saw some tutorial, where people use hereku server to fetch youtube api to flutter app. But they use just a single playlist. here is the link
Can you tell me how i can add multiple playlist on my app.
Thank You :)
I think you could maybe try a combination of this two packages:
youtube_api:
With this package you could fetch all the videos inside a playlist and (as it goes directly through Youtube API) the list should update as soon as a new video is uploaded.
youtube_player_flutter:
Given a certain list of youtube video ids, you can use this player to reproduce them (I’ve used it in a project and worked perfectly, even with live streams)
So, I guess that combining them would be my fist approach.
Update 31 Jan 20201
I tried youtube_api package but couldn't make it load the videos from a specific youtube playlistId neither, so I've checked their code and created a new implementation that only retrieves the videos from a specific playlistId.
Here is the code if you want to take a look https://github.com/rodrigoc85/flutter-load-youtube-playlist

Decoding facebook's blob video url

I found blob:https://www.facebook.com/c7e5a634-2343-4464-a03e-4a1987301ca1 video source on Facebook's private group and I really can't download the video by entering the url nor am I able to decode. Is there any way to decode this?
<video height="274" width="476" preload="auto" style="" class="_ox1 _21y0 _1_d1" data-video-width="476" data-video-height="274" data-original-aspect-ratio="1.7387058423913" id="u_0_27" src="blob:https://www.facebook.com/dc89feae-5b46-4103-8ee9-da7d7630ca94"></video>
This method will get the video and its audio AS SEPARATE FILES. The downloaded video will have no sound, but you will be able to download its audio file and connect it to the video in some video editing program if you need to.
In Google Chrome, go to Facebook.
Open the Chrome Developer Tools (F12).
Go to the Network tab in the Developer Tools (it's at the top of the Developer Tools window)
Play the video you would like to download on Facebook. Let it play for a few seconds and look at the Network tab during that. Long strings of numbers will appear every couple of seconds.
Right click one of those strings, then go Copy>Copy link address
Paste (CTRL+V) the link you copied somewhere (eg Notepad) and remove "&bytestart=3684046&byteend=3862768" from the end.
So I have a link like:
https://scontent-waw1-1.xx.fbcdn.net/v/t66.18014-6/46772657_738781116188283_6399514850013601801_n.mp4?_nc_cat=107&efg=4yJ7ZW5jb2RlX3RhZyI6ImRhc2hfb2VwX2hxMl9mcmFnXzJfdmlkZW8ifQ%3D%3D&_nc_ht=scontent-waw1-xx&oh=91a5abdd5608768a05fd884773a45802&oe=5C29B042
&bytestart=3684046&byteend=3862768
After you cut the bold part out, the link that points to the full .mp4 or .webm of the video is:
https://scontent-waw1-1.xx.fbcdn.net/v/t66.18014-6/46772657_738781116188283_6399514850013601801_n.mp4?_nc_cat=107&efg=4yJ7ZW5jb2RlX3RhZyI6ImRhc2hfb2VwX2hxMl9mcmFnXzJfdmlkZW8ifQ%3D%3D&_nc_ht=scontent-waw1-xx&oh=91a5abdd5608768a05fd884773a45802&oe=5C29B042
Open the modified link, right click the video inside and select "Save video as..."
Sometimes, when you open the link you may get just the audio of the video instead of the video itself.
That's because Facebook downloads the audio and video separately. Just try repeating steps 5-7 with a different string of numbers till you get it right. Instructions to reduce the chance of accidentally picking an audio link are below.
If you need to download many videos and don't want to guess whether your link points to audio or video, type larger-than: 50k (or more) in the Filter field in the Network tab. You can also click the XHR button in Filters so it doesn't show non-video files like FB images.
You can download an FB video in a chrome browser with no plugins / other software required. (As long as you are logged into FB and have permission to view the video).
open up the video and r.click for Get Video URL (copy it) -if you have the option "Copy URL at current time", use that option instead of "Show video URL"
paste that address into another tab and replace the www with m e.g. https://m.facebook.com/MusicIsMagico/videos/2645908645633407/?t=0
play the video, while it's playing open the dev tools and go to the elements tab
search for mp4 till you find a source address that's inside the
video tags - which will be inside a div that also contains another address with forward slashes and .mp4 in it.
e.g.
https://video.fmel5-1.fna.fbcdn.net/v/t42.9040-2/10000000_1804934796220974_2070197824632389632_n.mp4?_nc_cat=1&efg=eyJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&oh=785f223b80388c820f79b9a49c1dfc39&oe=5B73B10B
copy this source address. When you copy the address, chrome (if that's what you are using) does the html replacement for the ampersand characters. You will need to put them back. So replace the "& a m p ;" (< had to space that so it doesn't get converted here) separators in the address with just & - use notepad find and replace or something ) and paste in another tab. Drop any parts of the URL that have frame sizing etc.. so you address should look like this:
https://video.fmel5-1.fna.fbcdn.net/v/t42.9040-2/10000000_1804934796220974_2070197824632389632_n.mp4?_nc_cat=1&efg=eyJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&oh=5f241d3c08d5c819b0c3810d0e21d73b&oe=5B73BF1B
this will load
your browsers default html video player which has a download button
this will all only work if you are logged into FB and have permission to view the video (doesnt' work incognito)
Getting the right URL can take a bit of playing around but it works when you've got it right
Another alternative that worked in Firefox in Feb 2021:
Open the post's permalink
Change the page's URL - replace www with m and load that
Now use Inspector to navigate down to the div containing the video object - and the video URL will be a direct link
Copy-paste that URL into your browser, or create an anchor link to that URL and load your link and right-click to save destination.
It downloads as mp4 including video and audio.
Update, 2 Jul 2021
When I followed my own steps today, pasting the mp4 URL returned a page giving the following error:
Bad URL timestamp
However, I still found a work-around.
Side note: One of the containing divs has ID mobile_injected_video_feed_pagelet.
Facebook now injects the video element when you hit the play button.
That VIDEO element contains the URL you need. The URL does contain "MP4" in the path.
What I did was:
Open Inspector
Hit "Play" on the video
While the video is playing, find the VIDEO element and copy the URL from the VIDEO element
Paste that into a new tab
The new tab would show a smaller thumbnail of the video
Right-click the thumbnail and save the media to your PC
You must hit play for the VIDEO element to appear in the page source.
I'm using Firefox but any browser with an inspector should work.
Add this extension to your chrome browser to download FB videos:
https://chrome.google.com/webstore/detail/video-downloader-plus/njgehaondchbmjmajphnhlojfnbfokng
Once installed, go play the video and click the fb downloader icon (Downward Arrow icon) and choose your desired resolution.
I use Blob Video Downloader extension. It takes a few mins but it opens a new tab with a button to download video. I try it with a 1min video 720p.
For video that is in this blob format
or other formats served by Facebook with the intent to hide the ability to download, you can try loading the page without Javascript. They will serve you a version that is compatible, which means directlink
Tested working 11-2020
I assemble here the necessary steps from the different answers :
Facebook downloads the audio and the video separately, so get the
audio link from the google chrome inspector, by right click on the
video and choosing inspect ,going to Inspector, Network Tab, and
checking the links, use filter:larger-than:50k in the filter area to
select bigger files (change 50k according to the length of your
video), look in the results for mp4 or wav links, remove
&bytestart=number_here &byteend =number_here from the end of the
link, open it and download the audio
Get the video link from the google chrome inspector, using same
steps above, open the link and download the video
Now in order to mix the audio and the video, we need to use ffmeg :
Download ffmpeg build for your OS from its website, use this link
Extract the downloaded zip file
Open your command line tool and cd to :
\Downloads\ffmpeg-2021-04-28-git-1ab74bc193-full_build\ffmpeg-2021-04-28-git-1ab74bc193-full_build\bin
(change according to which version you downloaded)
Assume the input files are in the current folder, the output will be
generated in the current folder too
Mix the audio and the video with ffmpeg using command :
.\ffmpeg.exe -i video.ext -i audio.ext -c:v copy -c:a aac output.mp4

Download streaming video - Tried lot of options

I am trying to download an online streaming video and tried a lots of websites like keepvid.com, savevid.com, clipconverter.cc file2hd.com and lots more. I tried few players too like osflv FlowPlayer Gnash OS Player etc I tried some chrome and firefox extensions like Video Download helper etc but I am unable to download.
I found few options where the live stream gets recorded and then it is downloaded but due to poor internet connection, the recorded stream quality is not good. Can someone suggest what can i use to download this video? The link asks to login, just cancel the popup without logging in, you will still get access to the video in the link below.
http://www.topperlearning.com/study/icse/class-6/physics/video-lessons/measurement/2008/b110c5s4e5ch2718
it is some kind of CDN or cloud or some protocol like that. I found this in my research but I am not sure.
EDIT
Ok I got a way to download it but its kind of tedious. This is what I have tried.
Open Firefox
Type the above url and press enter (dont play the video) From the
Top-Right menu, click on Developer and then click Network
Ctrl+Shift+Q is the shortcut for above
Now play the video
In the box below, you will see some activity
Now look at the "Type" column. You will see few rows where the type
is "mp2t" These are the videos that gets segregated in bits and
pieces.
If you right click the row and click on open in new tab, it gives
you an option to download
To see all the videos together, you can select "Media" from the bottom bar.
Now the issue is : How to install all the bits together and how to assemble them in one full video.
You know that kind of question isn't really for this site...
Anyhow - all the services you have tried are specifically designed to work with a stream that's already going on in the web as it were, the best way to do this would be to connect the stream to a program on your machine, rather than a browser.
I'd use VLC, connect the stream with the direct URL i.e http://someaddress/thestream.media_extension, VLC allows you to record playback to a file, so simply leave it to playback and record it.

Playing video from youtube link without UIWebView

I want to play a video in my app from youtube link e.g: http://www.youtube.com/watch?v=Uner-3tTY1I.
But i don't want to redirect the user to any web view in the app. Just want to play that video in the video player in the current view of my application.
Is it possible to play the video without redirecting to UIWebView? If possible, how can i do this? Thanks for the help in advance.
The only allowed way seems to be using UIWebview. Doing it other way will violate youtube copyrights.
However there are few open source libraries out there. You can use it at your own risk.
Just use XCDYouTubeVideoPlayerViewController. It uses progressive download + MoviePlayer and AVFoundation frameworks.
To play this video you need to have the link to the video stream that is associated with video you want to play. Unfortunately this isn't so simple to get this link for some movies on YouTube since this link can be encoded for some movies (channel VEVO for example). Read this for more information about encoded links http://www.jwz.org/blog/2013/06/youtube-download-counter-countermeasures-applied/.
Unfortunattely as for now there is no simple way to decode these links. Despite this, you can get the source link for the not encoded films without bigger problems using some calls to the YouTube Api.

Steps to show live HTTP streaming video with no extension on MPMovieplayercontroller?

I am trying to develop an iPhone app which will be able to show live stream video on iPhone.The link is in format 'http://192.168.111.18:8002/testlink'.
I went through all the apple documentation and have downloaded mediastreamsegmenter and also it has been installed properly as I can see its details using 'man mediastreamsegmenter' command.I couldn't understand it after that.Please guide me regarding this.
You should use a link with suffix ".m3u8", which contains the TS segments of the live video stream. When you click on the "m3u8" link, then the video player will be launched to request for those TS segments, otherwise, the browser won't know it is a live video link.
https://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html