Git Product home page Git Product logo

antonyhaman / youtube-jextractor Goto Github PK

View Code? Open in Web Editor NEW
111.0 13.0 26.0 346 KB

Android based library that allows you to download or play audio and video from Youtube, in other words - youtube-dl for android

License: GNU General Public License v2.0

Java 68.73% Kotlin 31.27%
android java youtube extractor stream youtube-dl youtube-downloader youtube-dl-android youtube-video videodetails

youtube-jextractor's People

Contributors

antonyhaman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

youtube-jextractor's Issues

No stream data for audio+video

Hi, you have created very good git
but i am not getting links for iTag 18,34,35,59,78,22,37,38
with getVideoStreamItems i get video_only links which does not contain any audio
please update getVideoStreamItems it or create a new method to get this iTags

Video id is not extracting

Using 0.3.2 version
For Youtube Live

java.lang.RuntimeException:
at android.os.AsyncTask$3.done (AsyncTask.java:354)
at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:383)
at java.util.concurrent.FutureTask.setException (FutureTask.java:252)
at java.util.concurrent.FutureTask.run (FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:764)
Caused by: java.lang.NullPointerException:
at com.github.kotvertolet.youtubejextractor.network.RequestExecutor.executeWithRetry (RequestExecutor.java:28)
at com.github.kotvertolet.youtubejextractor.network.RequestExecutor.executeWithRetry (RequestExecutor.java:26)
at com.github.kotvertolet.youtubejextractor.network.RequestExecutor.executeWithRetry (RequestExecutor.java:26)
at com.github.kotvertolet.youtubejextractor.network.YoutubeNetwork.getYoutubeVideoPage (YoutubeNetwork.java:51)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractYoutubeVideoData (YoutubeJExtractor.java:160)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractAndPrepareVideoData (YoutubeJExtractor.java:147)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract (YoutubeJExtractor.java:83)
at com.smsolutions.aradana.VideoPlayActivity.extractVideoLinkFromYoutubeLiveStream (VideoPlayActivity.java:108)
at com.smsolutions.aradana.VideoPlayActivity.access$000 (VideoPlayActivity.java:30)
at com.smsolutions.aradana.VideoPlayActivity$ExtractLiveData.doInBackground (VideoPlayActivity.java:75)
at com.smsolutions.aradana.VideoPlayActivity$ExtractLiveData.doInBackground (VideoPlayActivity.java:64)
at android.os.AsyncTask$2.call (AsyncTask.java:333)
at java.util.concurrent.FutureTask.run (FutureTask.java:266)

NullPointerException

Hi there,
I implemented this library last night and it was working fine. now when I'm testing it is giving NullPointerException . I'm not understanding why it is behaving like this. I have testing on multiple Youtube links

here is my code:
image

here is error response:

image

Cannot add library in Android Studio

I have been trying to add the library to Android Studio, i put this: implementation 'com.github.kotvertolet:youtube-jextractor:Tag' in Gradle and sync is ok, but when i try to import the library to the activity or any class, the import is not loading the library, i write the code of the YoutubeJExtractor and keeps in red and the option for importing the library is not showing, how can i add the library to my activity?, thanks.

com.github.kotvertolet.youtubejextractor.exception.ExtractionException: Extraction faile

at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractYoutubePlayerConfig(YoutubeJExtractor.java:201)
com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractYoutubeVideoData(YoutubeJExtractor.java:178)
com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractAndPrepareVideoData(YoutubeJExtractor.java:149)
com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(YoutubeJExtractor.java:95)

use this video id : Error details: Cannot extract youtube player config, videoId was: BBncvyurOlQ

and play video on 240P or 480P etc these urls not play only 360 and 720 is playing in mp4 or wabm video format.

@kotvertolet

No js video player url found

Error details: No js video player url found
at com.github.kotvertolet.youtubejextractor.utils.YoutubePlayerUtils.getJsPlayerUrl(YoutubePlayerUtils.java:41)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.decryptYoutubeStreams(YoutubeJExtractor.java:246)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractAndPrepareVideoData(YoutubeJExtractor.java:150)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(YoutubeJExtractor.java:83)
at com.github.kotvertolet.youtubejextractor.ExtractionTests.checkMuxedStreamNonEncrypted(ExtractionTests.java:104)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at android.support.test.runner.AndroidJUnit4.run(AndroidJUnit4.java:101)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:384)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1932)

Problem with youtubeJExtractor.extract()

Hi! I want to extract info about video and I've done:

youtubeJExtractor.extract(videoId, new JExtractorCallback() {
                    @Override
                    public void onSuccess(YoutubeVideoData videoData) {
                        infoTv.setText(videoData.getVideoDetails().toString());
                    }

                    @Override
                    public void onNetworkException(YoutubeRequestException e) {
                        infoTv.setText(e.getMessage());
                    }

                    @Override
                    public void onError(Exception exception) {
                        infoTv.setText(exception.getMessage());
                    }
                });

Now as videoId I don't understand if I've to give the entire link or just the ID of the video that should be the last part of the link, but in any case it doesn't works.

This is the stackTrace:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.yuotube_downloader, PID: 8580
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
at java.net.InetAddress.getAllByName(InetAddress.java:1152)
at okhttp3.Dns$-CC.lambda$static$0(Dns.java:39)
at okhttp3.-$$Lambda$Dns$mTkNcZf2K4euny3_jks6Cac6Az0.lookup(Unknown Source:0)
at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:171)
at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:135)
at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:84)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:187)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:88)
at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at com.github.kotvertolet.youtubejextractor.network.UserAgentInterceptor.intercept(UserAgentInterceptor.java:20)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:225)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229)
at okhttp3.RealCall.execute(RealCall.java:81)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:188)
at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall.execute(DefaultCallAdapterFactory.java:97)
at com.github.kotvertolet.youtubejextractor.network.RequestExecutor.executeWithRetry(RequestExecutor.java:21)
at com.github.kotvertolet.youtubejextractor.network.YoutubeSiteNetwork.getYoutubeVideoPage(YoutubeSiteNetwork.java:51)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractYoutubeVideoData(YoutubeJExtractor.java:112)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractAndPrepareVideoData(YoutubeJExtractor.java:98)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(YoutubeJExtractor.java:84)
at com.example.yuotube_downloader.MainActivity$1.onClick(MainActivity.java:38)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Please update documentation

Thanks for the new update 0.3.4. A lot of issues were closed. But as soon as I updated the library a lot of code broke. It seems that class names and even some method names have been changed. Can you please update the documentation for the same,

Thanks again@

AdaptiveFormatItem list was null or empty

Hi Kotvertolet
I've updated lastest version and change new method extract with callback. But some video i received fault log

YtbExtractor.exception.ExtractionException: Extraction failed. Please, report here: https://github.com/kotvertolet/youtube-jextractor/issues. Error details: AdaptiveFormatItem list was null or empty

Some video i have :
YtbExtractor.exception.ExtractionException: Extraction failed. Please, report here: https://github.com/kotvertolet/youtube-jextractor/issues. Error details: No js video player url found
Pls tell me how to fix it !
Thank you !

Only 360p muxed stream is returning

I am using this library for fetching direct video url of youtube video link. This library is very helpful in extracting data. However, I am only getting one result from getMuxedStreams() API and it is of 360p qaulity.

The original video has many formats like 720p, 1080p etc. I am missing something here?

Code block:

        YoutubeJExtractor youtubeJExtractor = new YoutubeJExtractor();
        VideoPlayerConfig videoData;
        try {
            Log.v(TAG, "Getting video data");
            videoData = youtubeJExtractor.extract("tx-Mh7kH9SY");
            List<AdaptiveFormatsItem> formats = videoData.getStreamingData().getAdaptiveFormats();

            List<MuxedStream> muxedList =  videoData.getStreamingData().getMuxedStreams();

            Log.v(TAG, "List size of muxedList: "+muxedList.size()); // Returning only one object with URL or 360p video

        }

Extraction failed. Please, report here: https://github.com/kotvertolet/youtube-jextractor/issues. Error details: Cannot extract youtube player config, videoId was: DFIJ0jB5IA4

While I am testing on android 10 version devices I am getting proper videoData but while I am running on oreo level devices I am getting "Cannot extract youtube player config" exceptions.
I am using the API 0.3.3 version.
If I am using API version 0.2.5 the scenario became vise versa android 10 devices getting exceptions and oreo devices running properly.
please check the issue

Wrong Extract

Hi Kotvertolet,

This is my link youtube https://www.youtube.com/watch?v=aAxakbF24uY
when i search by youtube api and extract, its can be play and like :
https://www.youtube.com/watch?v=aAxakbF24uY&gl=US&has_verified=1&bpctr=9999999999
when i search not by youtube api and extract (search by user interface in youtube.com), its can not play and like :
https://www.youtube.com/watch?v=4&gl=US&has_verified=1&bpctr=9999999999
I dont know why has diference in 2 case with the link.
Thanks !

Can you add subtitles(Captions) ?

Hello,
Can you add captions(Subtitle) support for this?

Below is subtitles example.
Link

Can you copy the model to this project?

@kotvertolet

Also can you add method to get all video links from YouTube playlist?
So that method will return a list of video list in a youtube playlist?

Also when we take stream details, the size of a stream is null. The size property is null. So Is this the expected behavior?

'java.lang.String okhttp3.ResponseBody.string()' on a null object reference

2020-06-13 00:59:50.375 19894-19894/com.doracone.dorafy E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.doracone.dorafy, PID: 19894
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String okhttp3.ResponseBody.string()' on a null object reference
at com.doracone.dorafy.Until.YoutubeJExtractor.extractYoutubeVideoData(YoutubeJExtractor.java:114)
at com.doracone.dorafy.Until.YoutubeJExtractor.extractAndPrepareVideoData(YoutubeJExtractor.java:100)
at com.doracone.dorafy.Until.YoutubeJExtractor.extract(YoutubeJExtractor.java:86)
at com.doracone.dorafy.Adapter.VideoAdapter$1.onClick(VideoAdapter.java:76)
at android.view.View.performClick(View.java:5675)
at android.view.View$PerformClick.run(View.java:22641)
at android.os.Handler.handleCallback(Handler.java:836)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6251)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

Live stream video have only one quality format

In this method return only one format of live stream video videoData.getStreamingData().getHlsManifestUrl()

can you try for all supported format for live stream live 1080p, 720p, 480p formats

Is not working

An exception appears when extracting any video

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
        at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractYoutubeVideoData(YoutubeJExtractor.java:80)
        at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(YoutubeJExtractor.java:50)

is not working

org.mozilla.javascript.EvaluatorException: missing ] after element list
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:77)
at org.mozilla.javascript.DefaultErrorReporter.error(DefaultErrorReporter.java:64)
at org.mozilla.javascript.Parser.addError(Parser.java:260)
at org.mozilla.javascript.Parser.reportError(Parser.java:328)
at org.mozilla.javascript.Parser.reportError(Parser.java:315)
at org.mozilla.javascript.Parser.reportError(Parser.java:308)
at org.mozilla.javascript.Parser.arrayLiteral(Parser.java:3212)
at org.mozilla.javascript.Parser.primaryExpr(Parser.java:3022)
at org.mozilla.javascript.Parser.memberExpr(Parser.java:2655)
at org.mozilla.javascript.Parser.unaryExpr(Parser.java:2553)
at org.mozilla.javascript.Parser.mulExpr(Parser.java:2477)
at org.mozilla.javascript.Parser.addExpr(Parser.java:2461)
at org.mozilla.javascript.Parser.shiftExpr(Parser.java:2442)
at org.mozilla.javascript.Parser.relExpr(Parser.java:2417)
at org.mozilla.javascript.Parser.eqExpr(Parser.java:2389)
at org.mozilla.javascript.Parser.bitAndExpr(Parser.java:2378)
at org.mozilla.javascript.Parser.bitXorExpr(Parser.java:2367)
at org.mozilla.javascript.Parser.bitOrExpr(Parser.java:2356)
at org.mozilla.javascript.Parser.andExpr(Parser.java:2345)
at org.mozilla.javascript.Parser.orExpr(Parser.java:2334)
at org.mozilla.javascript.Parser.condExpr(Parser.java:2298)
at org.mozilla.javascript.Parser.assignExpr(Parser.java:2254)
at org.mozilla.javascript.Parser.variables(Parser.java:2091)
at org.mozilla.javascript.Parser.statementHelper(Parser.java:1194)
at org.mozilla.javascript.Parser.statement(Parser.java:1109)
at org.mozilla.javascript.Parser.parseFunctionBody(Parser.java:746)
at org.mozilla.javascript.Parser.function(Parser.java:916)
at org.mozilla.javascript.Parser.primaryExpr(Parser.java:3018)
at org.mozilla.javascript.Parser.memberExpr(Parser.java:2655)
at org.mozilla.javascript.Parser.unaryExpr(Parser.java:2553)
at org.mozilla.javascript.Parser.mulExpr(Parser.java:2477)
at org.mozilla.javascript.Parser.addExpr(Parser.java:2461)
at org.mozilla.javascript.Parser.shiftExpr(Parser.java:2442)
at org.mozilla.javascript.Parser.relExpr(Parser.java:2417)
at org.mozilla.javascript.Parser.eqExpr(Parser.java:2389)
at org.mozilla.javascript.Parser.bitAndExpr(Parser.java:2378)
at org.mozilla.javascript.Parser.bitXorExpr(Parser.java:2367)
at org.mozilla.javascript.Parser.bitOrExpr(Parser.java:2356)
at org.mozilla.javascript.Parser.andExpr(Parser.java:2345)
at org.mozilla.javascript.Parser.orExpr(Parser.java:2334)
at org.mozilla.javascript.Parser.condExpr(Parser.java:2298)
at org.mozilla.javascript.Parser.assignExpr(Parser.java:2254)
at org.mozilla.javascript.Parser.assignExpr(Parser.java:2277)
at org.mozilla.javascript.Parser.expr(Parser.java:2233)
at org.mozilla.javascript.Parser.nameOrLabel(Parser.java:1986)
at org.mozilla.javascript.Parser.statementHelper(Parser.java:1240)
at org.mozilla.javascript.Parser.statement(Parser.java:1109)
at org.mozilla.javascript.Parser.parse(Parser.java:648)
at org.mozilla.javascript.Parser.parse(Parser.java:583)
at org.mozilla.javascript.Context.compileImpl(Context.java:2530)
at org.mozilla.javascript.Context.compileString(Context.java:1515)
at org.mozilla.javascript.Context.compileString(Context.java:1504)
at org.mozilla.javascript.Context.evaluateString(Context.java:1259)
at com.github.kotvertolet.youtubejextractor.utils.DecryptionUtils.decryptSignature(DecryptionUtils.java:38)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.decryptYoutubeStreams(YoutubeJExtractor.java:205)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractAndPrepareVideoData(YoutubeJExtractor.java:101)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(YoutubeJExtractor.java:75)

It does not work in some videos

It does not work in some videos, when trying to extract the information from the video it gives an exception.

java.lang.NullPointerException at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractAdaptiveFormatsData(YoutubeJExtractor.java:72) at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.getYoutubeVideoData(YoutubeJExtractor.java:62) at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(YoutubeJExtractor.java:36) at com.btxdev.ytdltest.MainActivity$1.run(MainActivity.java:24)

The video is not blocked in my country and I can see it normally from youtube.

This is the video:
https://www.youtube.com/watch?v=XcicOBS9mBU

Cannot get Ytb Muxed Stream with HD video and audio

Dear Byte Surfer,
I'm using your library, and i can get ytb HD video streams without audio, audio streams, muxed stream with audio and 480p of video resolution. pls, help me to catch ytb HD video stream with audio (at lease 720p or better if video supported) or how the way to muxed video hd stream with audio stream online and return the url.
I have an example with video id is i5p51UDoW0U
There are some streams that i get :

Audio Streams :
https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=140&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=audio%2Fmp4&gir=yes&clen=3126928&dur=193.166&lmt=1588339141626431&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgGbMlbrbYKSkGMTcZ67RBWnV3hD7goGvXN_zwhOaKWuECIAlIWY_tQjSBWhgn14uVHA55Q4I8sHlIqv8Rh5YM4ptb&sig=AOq0QJ8wRAIgWDBy-3mrSLPzSpbOzMShZkZUN-6F28UbQZLcMEs4UxQCIGbz6xf-kbHDEkAEGXXEucnL4BrcKigsWTpc1mDyfkZj

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=249&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=audio%2Fwebm&gir=yes&clen=1186761&dur=193.141&lmt=1588336993808028&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5511222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAOqDk71cw25aclEzZS99Zilf3bYpLTBRNLEsJe-e_JwuAiEAxiZhoEa6LwmO5UnAULXrKjc7px4bs-TwYA5UlJnJn7Q%3D&sig=AOq0QJ8wRQIhAIYFTYy0MimpPT2S7SEVkDLAsAULeJQPf7y0gTGvtAWeAiBnmPNQ8QZcBhGAg4GBpCTmxYS1AdSzq45lk4vFmiwdzw==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=250&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=audio%2Fwebm&gir=yes&clen=1572619&dur=193.141&lmt=1588336994298913&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5511222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgdbADUS48G3cZRkkupFXQpEsd-kRn1Xk9ye7T59A5Av4CIHq2R4lpiCqmAoB_cynx-U1ZNX4hCzLa1hHhOGB_0iT4&sig=AOq0QJ8wRQIgTgb5eSAnroB8YCLHGCX95jB-pSYPKly8t63z_VF92dECIQC0N87q0wbK5M9iw9fcKiNBl_tcvGRhD0WhECgevbUk3w==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=251&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3125014&dur=193.141&lmt=1588336994366265&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5511222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgQVxNFB0ez9lbC1f5ZbM7a0S-Ax4w09OgjxQfAvFizTMCICcdaPsSaoWHxsTQd6A7yYiPgNQtderTTzjMNmfJscHg&sig=AOq0QJ8wRQIgBe7tGq66WEKqDQ4w34945tnxP1zeAh8ceaY9aUEiMGsCIQC2GM6voUUPeo6-nSaRx4nTYf6IyPsKX65T6FvWx1SRhw==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=18&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=12686257&ratebypass=yes&dur=193.166&lmt=1588338927954763&mt=1592961695&fvip=2&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgToKRYUekYZyBlkRIOZg6o_e3aDdMZSTUgBdFQRlw-m0CICDL0oDstLsg8SookrDn6hTOtJqZ5D8wrozDmDYZkTYh&sig=AOq0QJ8wRAIgQpMZI6cMjw9Sg-aKYzVstp-nyHO7Sm315q34P5HrUncCIEAEKqFgRduuhdAHzplD28b8MFwI1Sq34KmV3lUTBV5t

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=137&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=51732891&dur=193.109&lmt=1588339518203290&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgFLfyRXdTxDFEwa6cXcUeGYGpahnh_HWTs5rhUTAvTCUCIHFZMEJqyWVENgnknyf-cmdSi6VIQgHRhVtjKSLqyfag&sig=AOq0QJ8wRQIhANr0HGdFv1nM0lkW6ATCTW_Ucr0WiAJ_4VCcRlqNq3riAiB7CVvUrM8DynNLoB3INDJkBe37QBewh6AcIsVh4ajnDw==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=248&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fwebm&gir=yes&clen=46479734&dur=193.109&lmt=1588339905777742&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgYjQe5HOKLtL0VC9OobnNelYSmnyDBO3ecl1RdnBzoC0CIQC5gxNeUb8KaQgEjWjUxxOswMw1BnhJk5peBONWdetCaQ%3D%3D&sig=AOq0QJ8wRAIgeTwjWpvWn9KPBrT-si9DSVkzSAMjbDDfh-Q390HdllECIHmtT3w6iFIElGNjm30Vfpz3uk6bNufdJYRQWUgij7QI

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=399&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=40049656&dur=193.109&lmt=1589086321439908&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAMseGBFYtonGLVAUuXTtpFetZx2nv2pH7QW-6U2V0mCkAiEAxvyYhFSkAW90oPjyb61ZNrvZOgEV4sYkIJJ_4FyIWAM%3D&sig=AOq0QJ8wRAIgHLXTfpDXQyhQ_kgE_tr38M-SSHmJWvx_qX7h2ftI-L4CIFkJW4kRedry4j-vLOEtjzp9Wz0BCi1xxNfyE1mmqqiM

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=136&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=12306282&dur=193.109&lmt=1588339535837058&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgGfdldatu2-xV_fXTdi3B4DkuGYiqhmM1t-89cu3sE-0CIQDsH2FHOYuj0ewcGweEfsSgXAckvaU-Lsi6KMYfivjUpQ%3D%3D&sig=AOq0QJ8wRgIhANVbckpS9iyiKX9k1SDJM9nwQPzeLEsnY3rh1jnva3WSAiEAyoveYm2ReqhcmKOAV1qLC5ExI7pgBbpwhJWZ9QtS_b8=

Video Streams without audio :
https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=247&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fwebm&gir=yes&clen=16511591&dur=193.109&lmt=1588340014751262&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgRjAQuoUT--WtZxgdhaRS6t-JHGTOwI-PtZCekMIVWC8CIB_rIONLABKt7Ek0V4vo81ERBpCXkE0VLwUqNItDvK81&sig=AOq0QJ8wRQIhAKFdJMATxhFUwv4JtNUseGcE76YC2k1zYb5NMIvWJcvMAiBpfcbQVQJAR8uepw_XAS0HGqCE6285ynvznbfiJlZ8qA==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=398&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=23483652&dur=193.109&lmt=1589086062463530&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgZC_2ruAoS44R0_xM3PxAR3o6g0qxV5uMm2ZBKVgNdBECIDk-R8hU5kmS6Hc6Ga6AZbPTAgHyEJC01eZVvgI64k-b&sig=AOq0QJ8wRQIhAMK-1rrxLdlngFMbPE1chLNguxBZHl8KFGLaYk0tEyZ7AiBt4FWl22MR9ivCJAlxQ49cFXjAU0TmWwjEZdafSpD8Ng==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=135&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=8908521&dur=193.109&lmt=1588339535841070&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAOzEJvQ-ocb05z0rBvDpDZQBSswtpJX_RpIvYbUlkG8_AiA8RvaDcYbkaJ06Sh1Tp4LrA2tvEDYf9MlcQq8lEc1kiQ%3D%3D&sig=AOq0QJ8wRgIhAJ_IiLKLwqGjC8gRFzC3VbEAAHZdWzl-4BBAFtECOfDbAiEAwSXq9LltnTrSXxxgozVDg8kCURLd0ZyR-H4RuNTmeSw=

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=244&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fwebm&gir=yes&clen=9447509&dur=193.109&lmt=1588340014753243&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAMrb_P_O_v7hvfI7yV3Yu2sLW_iKTlJByPLjO2wqsYjMAiBseNwnP68Igy1KVlsv8HIOK0rpSuGmEWLhBoJIInpcfg%3D%3D&sig=AOq0QJ8wRAIgI8R41L1bwAZ-BLj5ViRqt66RXvCnBJp-zMSSHx1-IC4CIBZkTutrDFqV20D7YfQhFBPEN1aT4dgT7X5uBGT3jcoK

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=397&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=11675146&dur=193.109&lmt=1589086264882557&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgO-2d_Fche2ZrZwg_N9dlghSGmyZTbYxW0-AIWgO7TGMCIQDuUf_9NvQ0rdJlp_SdXEQyXga516PFwtRnekfq81IrYg%3D%3D&sig=AOq0QJ8wRAIgMpiaj4K2562p0akxJXsOvtdA_ycVWM0cPYuE6A6CgEQCIHtltQsS1HeMAAGCCB3pjvOFNaiHMnjGuHN6XJ3luNmp

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=134&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=6223477&dur=193.109&lmt=1588339535836370&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgYVHSJ7sTQgNwtODfF538U03T-Q3LxuU1FvsyQUgaBPgCIQCnX04f7O2_Gy2f_Gz9gMjrfanwLnFYk-utWZmD2MioVQ%3D%3D&sig=AOq0QJ8wRQIgSu7zW6Cjns_GISxl58lCOzUeRUyM396x_8JlOW3jmcACIQD1vuymAxalAgbgh3Y-jiABLhoA2BWkcFuvdDk7SFdk6Q==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=243&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fwebm&gir=yes&clen=6287526&dur=193.109&lmt=1588340014751832&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgMJsrrRctJAfOp0CLie3bULjtdwnNGyjNlhi52qoj3F4CIGUWVHFB59KYBGGV3_v762gcJcqB_j-FQy5HGRXn6F5m&sig=AOq0QJ8wRgIhAP2-WG1JRSt6W5K6qdiioq9Xw2WkctFqk9lKllu1C3mcAiEApAcGxrBEtF6PsoC1hf0fsCIuKmTEHEm_rZxGMr7oKNQ=

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=396&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=6793514&dur=193.109&lmt=1589086093888046&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgSaDGXdZP7fuHKMTT9wRudKpNOcAqpscuINhdN83FCGgCIH3C4qtyoxhT7PerjBzO4qpoyOIXyEj6wzpKJOmq9-HX&sig=AOq0QJ8wRQIgBCUT-lRVE_gMU1nk9nr4prwdqOvh9v7prILLA8zlnGQCIQCljfaYT0MULsKXMmzH7xuBZexAWJ4Ja67eJ3-NuD_CYw==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=133&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=3311314&dur=193.109&lmt=1588339535835240&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwQwIfJnTKUVtysSPzB8d8Y5s_mgqBzQwtgDYf632UYjnG2AIgLFDrqyBPIq7jp6-ib_by2KNMPAyp3DZ5i4MlFpWygJ4%3D&sig=AOq0QJ8wRgIhAKN-O-f-gJuuoy1dG8FuqJWGlrCqhZ2K0Ablyov11_CPAiEA_L58uqcU_GEPLbYh-f5hm3rTG_4mFE3L2USqD-GjVRY=

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=242&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fwebm&gir=yes&clen=3313405&dur=193.109&lmt=1588340014754141&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhALI1e5fDu8BpUJoIEOQ89sQxd8XurEhWs1kTOTPzlyHhAiEA_9AXOi8Kn7rS4l67W5qGlvNpMxd_V3DJjbTYKpi4NnU%3D&sig=AOq0QJ8wRQIhALuqyiIhw85Abw3NwNbeugFwd92ref7-K66ulBzUP4j8AiBpcZFHS3gpivU5ky3XCq-kxh267_Iux6nD-WywXS7mrg==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=395&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=3698287&dur=193.109&lmt=1589085808956233&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgXHNRx8OEs1BK2k_3b003MEGniSgfVb_IubRCvga24XcCICC0TjgS7fyY1DCRkKbqQGzEjMumiZvrcRNeRCDSzWRw&sig=AOq0QJ8wRgIhAJkZPFsFyAQGr5A8do-xxeV3gJ7DRypokLF7WOavGMFHAiEA0WoOXNAMGH9CmgyLa0ZzENc4NyseVr_2RstYDTinoUI=

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=160&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=1611032&dur=193.109&lmt=1588339535837579&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAMCQzGsMkkHCAbfgqLgonp5GE4_MAzdpdArDa6OO144gAiBlX9hnJZBu3lzQl9tKZdDH7A4KZe0ABUGEvSiuzIdt1Q%3D%3D&sig=AOq0QJ8wRAIgDChmSgo9CkGSSGre7SLqBUm9h7GA5j35rKRe2r6Q3eECIBcPvafVXOGe4dfn_q_B9VsKLj1qnsJziq6lMCg79bZL

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=278&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fwebm&gir=yes&clen=2225045&dur=193.109&lmt=1588340014753305&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5535432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAP-MdbRM-78gC92qLzeqqQGLpPSqj7zYBk0SVJkSKkqHAiEA3y-lAIx405vdPlqBOpTc1YcpbXl2_Xa8AiF9-DwnSvk%3D&sig=AOq0QJ8wRQIhALv65i_YOQ_IDtf3SlG4W1Cf6SgNwKpFpClUULTgwuJeAiBYoeyLaD1ZGeY-tTdAExSIq6UPjkwhhiiB4p7jCkerWQ==

https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592983408&ei=EKvyXvSKF8SklQSwsoywDw&ip=113.160.18.26&id=o-AC_yDW7zZIlbhalgopWz7x0h3Rrn0tN1OyifNV5TP-sj&itag=394&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1298750&vprv=1&mime=video%2Fmp4&gir=yes&clen=1845330&dur=193.109&lmt=1589085808956045&mt=1592961695&fvip=2&keepalive=yes&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAJpbd74CNLRSUvV5EUepFhXnJ5DwT79H2rKEkyKL-xrHAiA0sndQewrx--M9KyUkcGm4hpCoGzHr0L-D5qHcxZwZEw%3D%3D&sig=AOq0QJ8wRQIhAP7MIDxct872BiGZqlFGbQQigNjwOBauhTJSh9rrTY2TAiBCWnNw1icWJuZ_wlmSm2fY3SMEtAZ9HMzPTGtNnfM_Lw==

Muxed Stream 480p with audio :
https://r10---sn-8qj-i5ozd.googlevideo.com/videoplayback?expire=1592984047&ei=j63yXtHPFY-OlQTw66vACQ&ip=113.160.18.26&id=o-AGU6VWL0NOrEr_gmzGKiRD0JzIFl8VcI78cGtzVBy3Yf&itag=18&source=youtube&requiressl=yes&mh=e2&mm=31%2C29&mn=sn-8qj-i5ozd%2Csn-8qj-i5ose&ms=au%2Crdu&mv=m&mvi=9&pl=21&initcwndbps=1288750&vprv=1&mime=video%2Fmp4&gir=yes&clen=12686257&ratebypass=yes&dur=193.166&lmt=1588338927954763&mt=1592962360&fvip=2&beids=9466587&c=WEB&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgYlFSRW3tOKndzn3sP9V71lIUyMv0fHtXcQovnpo6JWICIQD0Q37PgWIsMW9cINSNeut8aQEzKZnLfJeZNGZF3MJZhw%3D%3D&sig=AOq0QJ8wRgIhAK3BPZlSAX_XNtt6KGv7Ci73YY6HeRHk_wCfrTuUdAVQAiEAth0X-14vv4GRkiJmK4b6N9hGbNqOeOir2Ax9Ocedb68=

Thank you very much !

Cannot extract youtube player config

Hello.

I am trying to extract the URL from the video with id 6FWdy6H_jcE, but every time I try the error Cannot extract youtube player config happens.

The code I am using to extract the URL is this:

fun extractYoutubeVideoData(context: ExoActivity, videoId: String): YoutubeVideoData? {
    val youtubeJExtractor = YoutubeJExtractor()
    lateinit var videoData: YoutubeVideoData
    try {
        videoData = youtubeJExtractor.extract(videoId)
    } catch (e: ExtractionException) {
    } catch (e: YoutubeRequestException) {
    }
    return videoData
}

Am I doing something wrong here?

This library is dead

I added this library in my project and it doesn't work neither owner resolves issues. I will not recommend this useless library. try any other.

App Crashes on Released Build

I have used your lib. for youtube link extraction on my app.
But when I run it crashes with this error log...

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.github.kotvertolet.youtubejextractor.models.youtube.videoData.VideoDetails.isLiveContent()' on a null object reference
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.a(SourceFile:226)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.c(SourceFile:148)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(SourceFile:93)
at com.bitsnbytes.exiontv.iptv.adapter.MovieTrailerAdapter$getTrailerLink$1.run(SourceFile:62)
at java.lang.Thread.run(Thread.java:833)

NOTE:
Everything works great with any error when I am using a debug version
BUT
when I sign apk and generate sign apk version then this error throws by your lib.

Audio not available in extracted links

I'm extracting a youtube streaming link using adaptiveVideoStreams but this is only getting a video and I can't hear anything on the video. previous days when I have to implement your library 2 months ago this is working fine but now I'm not getting any audio with video.
I guess youtube has changed something inside which you have to look for and update your library.

Thanks. :-)

isLiveContent is true then only two formats are play 360 and 720

when videoData.getVideoDetails().isLiveContent() is true then get videoData.getStreamingData().getAdaptiveVideoStreams();

this video list have 10-15 video format urls like webm and mp4 but webm urls is not play in any player only mp4 urls are play for 360p and 720p and this url is also play videoData.getStreamingData().getHlsManifestUrl() get by this method. so my question is can i get all working means playable urls from getStreamingData().getAdaptiveVideoStreams(); and both quality webm and mp4?

it stopped working again

com.github.kotvertolet.youtubejextractor.exception.ExtractionException: Extraction failed. Please, report here: https://github.com/kotvertolet/youtube-jextractor/issues. Error details: No js video player url found
at com.github.kotvertolet.youtubejextractor.utils.YoutubePlayerUtils.getJsPlayerUrl(YoutubePlayerUtils.java:41)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.decryptYoutubeStreams(YoutubeJExtractor.java:246)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extractAndPrepareVideoData(YoutubeJExtractor.java:150)
at com.github.kotvertolet.youtubejextractor.YoutubeJExtractor.extract(YoutubeJExtractor.java:83)

no audio in video

i have to use VideoStreamItem getUrl() there is have no audio there is have any setting for audio ?

Lightweight JS interpreter

I suggest that you change the javascript interpreter, liquidcore works perfectly but using this library the applications weigh a lot just for the use of this library.

There are other options that work in android to interpret javascript like rhino or js-evaluator-for-android.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.