áááá«ááºážááŸá¬ ááá¯áá±á¬ááºážáááº- ááŒááºááœááºážááŸá á¡á á®á¡á ááºáá»á¬ážá áá»ááºáááºáá»á¬ážááŸáá·áº á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááŒáá·áº Android á¡ááœáẠYouTube á¡áœááºááá¯ááºážááá±áá¬á¡ááŒá±á¬ááºáž ááŒá±á¬ááŒááá¯áá«áááºá
áá»á²á·ááœááºááááºáááºááŒááºáž-
ááœááºáá²á·ááá·áºá¡áá»áááºá¡áááºážáááºá áá»áœááºá¯ááºááẠá¡á¶á·ááŒááœááºáá±á¬ááºážáá±á¬ á¡ááá®áá±ážááŸááºážáá±ážáá¬ážáá°ááŸáá·áº á¡áá¬ážáá°ááŒá¿áá¬ááᯠááŒá¯á¶ááœá±á·áá²á·ááááºá
áá¶ááá±á¬ááºážá áœá¬áá²á Channel Whitelist á¡ááá®áá±ážááŸááºážááᯠááá·áºááœááºážááŒá®ážáá±á¬ááºá áá±á¬ááºááẠááá¯ááŒá±á¬ááºá áá¬áá±á¬ááºážáá±á¬áºáááºáž ááŒááºážáááºááá·áº áá»áá¯á·ááœááºážáá»ááºááᯠááŸá¬ááœá±ááœá±á·ááŸááá²á·ááẠ- NIH I (ááŸáá·áº á¡áá±ážá¡ááŒá®ážáá¯á¶ážááŸá¬á áá«á·áá¬áž) ááẠá¡áá°ážáááŒáá·áº YouTube Kids ááá±áá¬ááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá±á·á¡áááŒá®ážáá±á¬ááºááœáẠáááºážáá¡ááºáá¬áá±á·á áºááẠá¡ááœááºá¡áááºááŒá±áááºááá¯ááºááŒá±á¬ááºáž ááœá±á·ááŸááá²á·áááºá
áá±áá°áá»á¡á¬ážááŒáá·áº á¡áá»áááºáá áºáá¯ááŒá¬ááŒá®ážáá±á¬áẠáá»áœááºá¯ááºááẠáá»áœááºá¯ááºáááá¯ááºááá¯áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠá¡áááºááá·áºááŒá áºáá±ááŒá®ááŒá áºáááºá á¡áá»áááºá¡áá±á¬áºááŒá¬ááŒá®ážáá±á¬ááºá ááááá¯á¶ážááœááºááŸáááŸá¯ááœáẠtag áá áºáá¯ááá·áºááá¯ááºáááºá
á¡ááááá±á¬á·áá»ááºáá»á¬áž:
- ááá·áºá áááºááŒáá¯ááºáá»ááºáááºáá»á¬ážááŸáá·áº á¡á á®á¡á ááºáá»á¬ážááᯠááá·áºáá« - áááºážááá¯á·ááᯠáá±áááœááºážáá±áá¬áá±á·á áºááœáẠááááºážáááºážááŒá®áž á¡ááœáŸááºážááŒá¯áá¯ááºáááºááŒá áºáááºá
- ááá·áºááœááºážáá¬ážáá±á¬ á¡á á®á¡á ááºáá»á¬ážá¡ááœááºáž áááá¯á¡ááºáá«á áááºážááá¯á·ááᯠáááá¯á¡ááºáá«á áááá¯á¡ááºáá±á¬ áá®áá®ááá¯áá»á¬ážááᯠááááºáá«á
- á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážá á¬áááºážááᯠá¡ááá®áá±ážááŸááºážááœáẠááá·áºááœááºážáá¬ážáá±á¬ áá»ááºáááºáá»á¬ážááŸáá·áº á¡á á®á¡á ááºáá»á¬ážááŸáá¬áá»áŸáẠáá»áááºážáá¯ááºáá±ážáá«áááºá
ááœáá·áºáááºážá¡áááºážá¡ááŒá
áºá GPLv3 ááá¯ááºá
ááº-
á¡á±á¬ááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ á¡áá±ážá áááºá¡áá»ááºááŸá¬ á¡áááá¡ááºá¹áá«áááºáá»á¬ážá ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºá¡ááŒáẠGoogle API ááŸáá·áº áááºáá¯ááºááá¯ážááŒááºážáá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯áá² ááá·áº Android á¡ááá®áá±ážááŸááºážááœáẠYouTube áá®áá®ááá¯áá»á¬ážááœáá·áºáááºážááá¯ááºáᬠáááºážááá¬ááá¯ááºáá¬á¡áá±ážá áááºá¡áá»ááºá¡áá»áá¯á·á
áááºáá ááááºááŸáá·áº ááá±áá¬á ááááºáá±á«áºááœááº- áá»áááºážááá¯ááºáá±á¬ áá»ááºáááºáá»á¬ážá០áá»áááºážá¡ááŒá¶ááŒá¯áá»ááºáá»á¬áž
áá±áááœááºážáá±áá¬áá±á·á áºááœááºáá»ááºáá»ááºážááŸá¬ááœá±áá«á
áá»ááºááẠááá¯á·ááá¯áẠá¡á á®á¡á ááºá¡áá áºáá áºáᯠááá·áºáá«á
á¡áááºááŒáá·áº á¡áœááºááá¯ááºážááœáẠááŸá¬ááœá±áá« ááá¯á·ááá¯áẠáááá¬ážááá·áºááááºá á¬ááᯠááá·áºáá«á áá»ááºááẠááá¯á·ááá¯áẠá¡á á®á¡á ááºáá áºáá¯á áá®áá®ááá¯áá»á¬ážá á¬áááºážááᯠáá±áááœááºážáá±áá¬áá±á·á áºááœáẠááááºážáááºážáá¬ážááŒá®áž á¡áá¯ááºááœááºáá»á¬ážááᯠáááºááŸáºááá¬ážáá«á
Dynamic playlist - ááŸá¬ááœá±ááŸá¯ááááºáá»á¬ážááᯠááœáá·áºáá«á
áá®áá®ááá¯á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááœáẠááŸá¬ááœá±ááŸá¯áá±ážááŒááºážáá»ááºááᯠáá»á±áááºá á±ááá·áº áá®áá®ááá¯áá»á¬ážáᬠááŸááá«áááºá
á¡áá¬ážáá°á áááºááẠá¡á á®á¡á ááºáááºáááºáá»á¬ážá០áá®áá®ááá¯áá áºáá¯ááᯠááœáá·áºáá«áá áá°áá®áá±á¬á¡á á®á¡á ááºá០áá®áá®ááá¯áá»á¬ážáᬠá¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážá á¬áááºážááœáẠáá±á«áºáá¬áá«áááºá
á¡á á®á¡á ááºáá»á¬ážááŸáá·áº áá»ááºáááºáá»á¬ážááᯠáá¬áá®ááááºáá¬ážááá¯ááºááŒá®áž áááºáá¶ááœáá·áºááá¯ááºáááºá
áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«- ááááºáá¬ážááá·áº á¡á á®á¡á ááºá០áá®áá®ááá¯áá»á¬ážááẠááŸá¬ááœá±ááŸá¯ááááºáá»á¬ážá ááŒáá·áºááŸá¯ááŸá¯ááŸááºáááºážááŸáá·áº á áááºááŒáá¯ááºá á¬áááºážá០áá»á±á¬ááºááœááºááœá¬ážáááºááŒá áºáááºá ááá¯á·áá±á¬áº á áááºááá°áá«ááŸáá·áºá á¡á á®á¡á ááºááᯠááŒááºááœáá·áºááŒá®ážáááºááŸáá·áº áááºážááá¯á·ááẠááá¯áá±áá¬ááœáẠáá»ááºáá»ááºážáá±á«áºáá¬áá«áááºá
á¡áááºáá»ááºá á¬áááºážááœáẠáá®áá®ááá¯áá áºáá¯ááá·áºáá«á
ááááºááá¯á·áá¬ážáá±á¬ áá®áá®ááá¯ááᯠá¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážá ááŸá¬ááœá±ááŸá¯ááááºáá»á¬ážááœáẠááŒááááºááá¯ááºááá·áºá¡ááŒáẠá áááºááŒáá¯ááºá á¬áááºážááŸáá·áº ááŒáá·áºááŸá¯ááŸá¯ááŸááºáááºážá០áá»á±á¬ááºááœááºááœá¬ážáááºááŒá áºáááºá áá®áá®ááá¯ááᯠááŒáá á¬áááºážáááºáááºáá»á¬ážááœáẠááŒááºááá¯ááºáá²ááŒá áºáááºá
á¡áááºáá»ááºá
á¬áááºážááᯠááŒáá·áºááŸá¯ááŒá®áž ááŸá¬ážááœááºážá
áœá¬ ááááºááá¯á·áá¬ážáá±á¬ á¡áá¬áá»á¬ážááᯠááŒááºáááºááœáá·áºáá«-
áááºáááºáá»á¬áž > áá±á«ááºážá
á®ážáá®áá°áž > á¡áááºáá»ááºá
á¬áááºáž
á¡ááŒáá¯ááºáá¯á¶áž áá®áá®ááá¯áá»á¬ážááŸáá·áº ááŒáá·áºááŸá¯ááŸá¯ááŸááºáááºáž
ááá±áá¬á ááááºááŸá á¡ááŒáá¯ááºáá¯á¶ážáá®áá®ááá¯áá»á¬ážááᯠáá¬áááºá¡áá±á«áºáá±á¬áá·áºááœáẠááá±ááœáá·áºááŒáá·áº á¡ááŸááºá¡áá¬ážááŒá¯áá¬ážáááºá
áá»ááºááŸá¬ááŒááºáá±á«ááºážá ááºááŸá á¡ááŒá±á¬ááºážá¡áá¬áá®áá°ážáá»á¬ážááŸáá·áº ááŒáááºážáá»á¬ážááŸáá·áº á á¬áááºážáá»á¬ážááœáẠááŒá¬ááŒá¬ááŸáááºáá«á
ááŒáá·áºááŸá¯ááá·áºá ááááºááœáẠááá¯á·ááá¯áẠáááºááá·áºá á¬áááºážááœááºáááᯠáá®áá®ááᯠááá¯á·ááá¯áẠá¡á á®á¡á ááºáá áºáá¯á á¡ááẠááá¯á·ááá¯áẠááááºá á¬ááᯠáá°ážáá°áá«á
á¡ááŒááºá áááºáá« - á¡ááŒá¶ááŒá¯áá¬ážáá±á¬ áá»ááºáááºáá»á¬ážááŸáá·áº á¡á á®á¡á ááºáá»á¬ážááᯠááá·áºáá«á
á¡ááá®áá±ážááŸááºážááẠá¡áááºáá±á¬áºááŒáá« áááºáá¬ážááŒááºáá¬ááºáá¯á¶áá»á¬ážááŸáá·áº áá»ááºááŒááºážáá°áá«áááá·áºáááºá
áááá¯á¡ááºáá±á¬ áá»ááºáááºáá»á¬ážááŸáá·áº á¡á á®á¡á ááºáá»á¬ážááᯠáááºáááºáá»á¬ážááœáẠááááºááá¯ááºááẠááá¯á·ááá¯áẠáá»ááºááá¯ááºáááºá
ustanovka
ááá±á¬áá»ááºá
á¬áá»ááºááŸá¬-
á¡ááºá¹áááááºááá¯:
áá¯ááºáá±ááŸá¯áá»á¬áž
- áááºážááẠGoogle Play ááœááºáááŸáááá·áºá¡ááŒáẠáááŒá¬áá®áá¬áá¡ááœááºážááœáẠááŸááá±á¬á·áááºááá¯ááºáá« (áá±á¬áºááŒáá¬ážáá±á¬ Channel Whitelist ááá¯á·ááá¯áẠNewPipe ááá±áá¬á¡áá«á¡ááẠáááºážááá¯á·ááááºááá¯ááºááᯠAPI ááá¯áá»á±á¬áºááŒááºááŒá®áž ááœá²ááŒááºážá áááºááŒá¬ááá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠGoogle á០áá¬ážááŒá áºáá¬ážáááº)
- á¡áááºážá¡ááŒá
áºáá»á¬ážá០áááºáá±á¬ááºáááº-
https://github.com/sadr0b0t/yashlang/ - áá¯ááºáá±ááŸá¯á¡ááá¯ááºážá០apk ááá¯áá±á«ááºážáá¯ááºáá¯ááºáá«-
https://github.com/sadr0b0t/yashlang/releases - á¡áá»áááºá¡áááºážáááºááŒá¬ááŒá®ážáá±á¬áẠáááºááá±á¬ááºááœáẠáá±á«áºáá¬áááá·áºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá
F-Droid (áááºááá¯ážáá»áŸá±á¬ááºááœáŸá¬ááᯠá¡áááºááŒá¯áá¯á¶ááááºá áá«áá±ááá·áº áá áºááá®ážáá«ážáá±á¬áẠáááŒá±á¬ááºážááá±ážáá«áá°áž) áá«áá±ááá·áº áááŒá áºáá±ážáá«áá°ážá
apk ááá¯ááºá ááá°áá®áá±á¬ áááºááŸááºáá»á¬áž ááŒá±á¬áá·áº ááá°áá®áá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážá០ááá°áá®áá±á¬ áá¬ážááŸááºážáá»á¬ážá¡ááŒá¬áž áá°ážááŒá±á¬ááºážááŒááºáž á¡áááºáááŒá±ááŒá±á¬ááºáž ááŸááºáá¬ážáá¬ážáá«á á¡áááºážá¡ááŒá áºá¡áá áºá០áá¬ážááŸááºážááᯠááá·áºááœááºážááŒááºážáááŒá¯áá®á áááºááẠáá±áá¬ááŸáá·áºá¡áá° ááá·áºááœááºážáá¬ážáá±á¬ áá¬ážááŸááºážááᯠáŠážá áœá¬ áá»ááºááá«ááẠ- playlist cache ááŸáá·áº browsing history (ááá¯á·ááá¯áẠdata ááœáŸá²ááŒá±á¬ááºážáááºážááᯠááŸá¬ááœá±áá«)á
áááºážááá¬ááá¯ááºážááá¯ááºáá¬á¡áá±ážá áááºá¡áá»ááºá¡áááº
Google/YouTube á¡áá±á¬áá·áºáá áºáá¯áááá¯á¡ááºáá«á áááºáááºá¡ááºáá¬áááºáá¬ááá¯á¡ááºáááºá á¡á±á¬ááºáá«á á¬ááŒáá·áºááá¯ááºáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áááº-
NewPipeExtractor YouTube áááºáá±á¬ááºááŸá¯ááŸáá·áº áá±áá¬áá»á¬áž áááºáá¶áááŸááááºexoplayer áá®áá®ááá¯ááœáá·áºáááºá
ááœáá·áºáááºážá¡áááºážá¡ááŒá áºá á¡ááá²á· GPLv3 ááá¯ááºá ááºá
áá±ážááœááºáž- á
á¬áá±ážááá¬áá»á¬ážáá¶á០ááœáá·áºááŒá¯áá»ááºáááŸááá² (ááá¯á·ááá¯áẠááŒááºáá¬ážá
áœá¬áá¬ážááŒá
áºáá¬ážáá±á¬) áááºááá¯ááºáá»á¬ážááᯠááŒá
áºáá¯ááºááŒááºážááẠáá±áá¯áá»á¡á¬ážááŒáá·áº ááá¬ážáááºáá«ááá¬ážá
á¡ááŒá±- áá¯ááºáá«áááºá áá«áᬠááá¬ážáááºáá«áááºá á¡áá»á¬ážáá°ááŸá¬áááŸáááá¯ááºáá²á· á¡áá»ááºá¡áááºááœá±ááᯠáááºááá¯á· áááºáááááá¬ááᯠá¡áá¯á¶ážááŒá¯áááá²ááá¯áᬠááá·áºá¡áá±á«áºááŸá¬ áá°áááºáá«áááºá ááá¯á·á¡ááŒááº-
ááá»áá¯á·á áá¯ááºáááºá
á
á¬ááŒáá·áºááá¯ááº
ááœáá·áºáááºá
á¬áááºážááá¯ááœáá·áºáááºáá¯ááºááẠá¡áááºážáááºáááºáá²áá±á¬ááŒá±á¬áá·áº á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá±ážáá«á á
áááºáááºá
á¬ážáá°áá»á¬ážá¡ááœááºá á¡áááºážá¡ááŒá
áºáá¯ááºááá¯ááŒáá·áºáá«á áááºážááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº á¡áááºážáá
áºáá¯ááŒá
áºáááºá
á¡áá»á¬ážáá°ááŸá¬ áá®áá®ááá¯á á¬áá»ááºááŸá¬á ááááºá á¬á០áá®áá®ááá¯á á®ážááŒá±á¬ááºážáá áºáá¯áááááºá á¬ááᯠáááºááá¯á·ááá°ááŒá®áž ááá±áá¬ááœáẠááœáá·áºááááºááᯠááŒáá·áºááŒáá«á áá¯á·á
á
á¬ááŒáá·áºááá¯ááºááᯠáá»áááºáááºáá«á
dependencies {
...
// NewPipe: youtube parser
// https://github.com/TeamNewPipe/NewPipeExtractor
implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.17.4"
...
}
á¡á²áá«ááŒá®ážááẠáááºáž ááá¯á¶ážááá¯ááºáá±ážáá°áž ááá¯áá±á¬á· ... á¥ááá¬áá»á¬ážááẠáá»á±á¬ááºáá¯á¶ážáá±áá±á¬ Downloader á¡áááºážá¡ááœáẠááá¯ááºááŒá¬ážáááá·áºáááºá áááºážááᯠá¡ááá¯á¡áá»á±á¬ááºá
ááºážáááºááŸá¯áááºážááœáŸááºá០ááá±á¬áá»ááºááá¯á· áá°ážáá°ááá¯ááºáá«áááºá
YouTube áááºááá¯ááºááŸá áá®áá®ááá¯á á¬áá»ááºááŸá¬áááááºá á¬ááŒáá·áº áá®áá®ááá¯á á®ážááŒá±á¬ááºážááááºá á¬ááᯠááá°áá«-
public String extractYtStreamUrl(final String ytVidUrl) throws ExtractionException, IOException {
// https://github.com/TeamNewPipe/NewPipeExtractor/blob/dev/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractorDefaultTest.java
NewPipe.init(Downloader.getInstance(), new Localization("GB", "en"));
final YoutubeStreamExtractor extractor = (YoutubeStreamExtractor) YouTube
.getStreamExtractor(ytVidUrl);
extractor.fetchPage();
final String streamUrl = extractor.getVideoStreams().size() > 0 ? extractor.getVideoStreams().get(0).getUrl() : null;
// for (final VideoStream stream : extractor.getVideoStreams()) {
// stream.getUrl();
// }
return streamUrl;
}
áá®áá®ááá¯ááááºá
ᬠytVidUrl ááẠá¥ááá¬á¡á¬ážááŒáá·áº YouTube áááºááá¯ááºááŸá áááºááá·áºáá®áá®ááá¯áá
á¬áá»ááºááŸá¬á á¡áá»á¬ážáá°ááŸá¬ááááºá
á¬ááŒá
áºááá¯ááºáááºá
áá¬áá¬áá¯ááºáááºá
á
á¬ááŒáá·áºááá¯ááºááᯠááá±á¬áá»ááºááŸáá·áº áá»áááºáááºáá«á
dependencies {
...
// google Exoplayer
// https://github.com/google/ExoPlayer
// https://exoplayer.dev/
implementation 'com.google.android.exoplayer:exoplayer:2.10.8'
...
}
ááá±áá¬á¡á áááºá¡ááá¯ááºážááᯠá¡ááá®áá±ážááŸááºážá ááááºáá±á«áºááœáẠáá±áá¬áá»ááŒááºážá ááœá²ááœá²áá»ááºá¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá« (ááá±á¬áá»ááºáááºááá¯ááºááœáẠááá°áá¬áá»á¬áž ááá¯á·ááá¯áẠáá¯ááºááœáẠááŒáá·áºááŸá¯ááá¯ááºáááº)á ááá±áá¬ááŸá YouTube á០áá®áá®ááá¯ááᯠá áááºááœáá·áºáááºážááá¯áᬠááŒáá·áºááŸá¯áá«áááºá á¡áááºáá±á¬áºááŒáá«ááááºá á¬-
private void playVideoStream(final String streamUrl, final long seekTo) {
if (streamUrl == null) {
// ПÑÑаМПвОÑÑ Ð¿ÑПОгÑÑваМОе ÑекÑÑегП ÑПлОка, еÑлО бÑл загÑÑжеМ
videoPlayerView.getPlayer().stop(true);
} else {
// https://exoplayer.dev/
// https://github.com/google/ExoPlayer
final Uri mp4VideoUri = Uri.parse(streamUrl);
final MediaSource videoSource = new ProgressiveMediaSource.Factory(videoDataSourceFactory)
.createMediaSource(mp4VideoUri);
// ÐПÑÑавОЌ Ма паÑÐ·Ñ ÑÑаÑПе вОЎеП, пПка гПÑПвОЌ МПвПе
if (videoPlayerView.getPlayer().getPlaybackState() != Player.STATE_ENDED) {
// ÐÑлО ÑÑавОÑÑ ÐœÐ° паÑÐ·Ñ Ð·ÐŽÐµÑÑ Ð¿ÐŸÑле ÑПгП, как Ð¿Ð»ÐµÐµÑ Ð²ÑÑал Ма паÑÐ·Ñ ÑаЌ, закПМÑОв
// ОгÑаÑÑ Ð²ÐžÐŽÐµÐŸ, пПлÑÑОЌ зЎеÑÑ Ð²ÑПÑПе ÑПбÑÑОе STATE_ENDED, пПÑÑÐŸÐŒÑ ÐœÐ°ÐŒ ÐœÑжМа зЎеÑÑ
// ÑпеÑОалÑÐœÐ°Ñ Ð¿ÑПвеÑка.
// ÐÑО ÑÑПЌ зМаÑеМОе getPlayWhenReady() ПÑÑаМеÑÑÑ true, пПÑÑÐŸÐŒÑ Ð¿ÑПвеÑÑеЌ ОЌеММП ÑПÑÑПÑМОе.
// https://github.com/google/ExoPlayer/issues/2272
videoPlayerView.getPlayer().setPlayWhenReady(false);
}
// Prepare the player with the source.
((SimpleExoPlayer) videoPlayerView.getPlayer()).prepare(videoSource);
// УкажеЌ ÑекÑÑÑÑ Ð¿ÐŸÐ·ÐžÑÐžÑ ÑÑÐ°Ð·Ñ Ð¿ÑО загÑÑзке вОЎеП
// (в кПЌеМÑаÑ
ÑÑП-ÑП пОÑÑÑ ÑÑП-ÑП пÑП ЎаÑаÑПÑÑÑ, кПÑПÑÑе пПЎЎеÑжОваÑÑ ÐžÐ»Ðž Ме пПЎЎеÑжОваÑÑ
// пеÑеÑ
ÐŸÐŽÑ seek пÑО загÑÑзке, пПÑ
Пже, ÑÑП ÑÑП ÑÐžÐ³ÐœÑ - пÑПÑÑП ЎелаеЌ seek ÑÑÐ°Ð·Ñ Ð¿ÐŸÑле загÑÑзкО)
// Exoplayer plays new Playlist from the beginning instead of provided position
// https://github.com/google/ExoPlayer/issues/4375
// How to load stream in the desired position? #2197
// https://github.com/google/ExoPlayer/issues/2197
// в ÑÑПЌ ЌеÑÑе МПÑЌлаÑÐœÑй duration еÑе Ме ЎПÑÑÑпеМ, пПÑÑÐŸÐŒÑ ÐµÐ³ÐŸ Ме пÑПвеÑÑеЌ
//if(seekTo > 0 && seekTo < videoPlayerView.getPlayer().getDuration()) {
if (seekTo > 0) {
// Ма 5 ÑекÑМЎ ÑаМÑÑе
videoPlayerView.getPlayer().seekTo(seekTo - 5000 > 0 ? seekTo - 5000 : 0);
}
videoPlayerView.getPlayer().setPlayWhenReady(true);
}
}
ááááŒá®ážáá¬ážááá á¹á áá»á¬áž
- ááá·áº Google/YouTube á¡áá±á¬áá·áºááá¯á· áááºáá±á¬ááºááẠááá¯á¡ááºááá·áº á¡áááºááá·áºáááºáá»ááºáá»á¬ážááŸáá·áº áá®áá®ááá¯áá»á¬ážááᯠááœáá·áºáááºááá¯ááºáá«á
á¥ááá¬:
á¡ááŒá¶ááŒá¯áá»ááº- ááá¯áá®áá®ááá¯áá»á¬ážááᯠá¡áááºáá»ááºá á¬áááºážááœáẠááá·áºáá« ááá¯á·ááá¯áẠááŸá¬ážááœááºážáááºááŸááºáá¬ážááá·áº ááá·áºáááºáá»ááºááᯠáááºááŸá¬ážááẠáá®áá®ááá¯áá±ážáá¬ážáá°ááᯠáá±á¬ááºážááá¯áá«á
- áááºáá±á¬ááºááŸá¯ááẠáá¯áá¡áá»á¬ážááᯠááŒááºáá±ážááá·áº á¡áá»áá¯á·áá±á¬ áá¯ááºááœáŸáá·áºááŸá¯áá®áá®ááá¯áá»á¬ážááᯠááœáá·áºáááºááá¯ááºáá« (ááá¯áá²á·ááá¯á·áá±á¬ áá®áá®ááá¯áá»á¬ážá¡ááœááºá á á¬áááºážáá»á¬ážááŸáá·áº ááŒáááºážá¡ááœááºážááŸá ááŒá¬áá»áááºááᯠâ[dur undef]â á¡ááŒá Ạá¡ááŸááºá¡áá¬ážááŒá¯áá«áááº)
á¥ááá¬:
á¡ááŒá¶ááŒá¯áá»ááº- ááá¯áá²á·ááá¯á·áá±á¬ áá®áá®ááá¯áá»á¬ážááᯠá¡áááºáá»ááºá á¬áááºážááœáẠááá·áºáá«á
- ááá¯ááºááá¯ááºááá·áºááºáá»á¬ážááŸáá áºááá·áºáᬠáááŸáááá¯ááºáá±á¬ áá®áá®ááá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá°á áá®áá®ááá¯á¡á¬ážáá¯á¶ážááᯠáááºáá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá»áŸááºááẠáá±áááœááºáž á¡á á®á¡á ááºááœáẠááá«áááºááá¯ááºáá«á
á¥ááá¬:
-
á¡áá±á¬áá·áºáááºáááºáááá¯á¡ááºáá±á¬ á¡áá»á¬ážáá°ááŸá¬áá®áá®ááá¯ááᯠááá±á¬ááºáá¬ááœááºááœáá·áºáá±á¬áºáááºáž ááá±áá¬ááœááºááá á¬ážáá«áá áá»áœááºááœááºážáá»ááºá¡á á®áááºáá¶á á¬áá±ážááá¯á·áá« (ááŒá¿áá¬ááᯠáá¬ážááŸááºážá¡áá áºááœáẠááŒá±ááŸááºážááŒá®ážáá¬ážááŒá áºááá¯ááºááẠNewPipeExtractor áááºááẠá€áá¬ážááŸááºážááŒáá·áº á ááºážáá±ážááœá²ááá¯áᬠá¡ááºááááºáá¯ááºááẠááá¯á¡ááºáááºááŒá áºáááºá
á¥ááá¬á¡á¬áž ). -
á¡ááºáá¬áááºááŸá±ážáá»áŸáẠ(ááá¯á·áá±á¬áºáááááºáá«) áá»ááºááŸá¬ááŒááºááẠááŸá±ážááœá±ážááœá¬ážááá¯ááºáááºá
ááááºá¡ááŒá áº
áá»áœááºá¯ááºááá¬ážááẠáááºááááºá០Android á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáááœáá·áºááá¯ááºáá±á¬ Samsung á áááºáá®áá®ááá¯á· ááŒá±á¬ááºážááœá¬ážáááºá ááá¯á·ááŒá±á¬áá·áºá á¡áá±á¬ááºážáá¯á¶ážáááááááºážáá»á¯ááºááŸá¯ááẠáá¯áá¹ááá¯ááºáá±ážá¡áááŒá áºáá±áá²ááŒá áºáááºá
áá«áá±ááá·áº á¡ááºááá®áá±ážááŸááºážá áá»áœááºáá±á¬áºááá¯ááºááá¯áẠá áááºá¡áá¯á¶ážááŒá¯ááá¯á· á¡áááºááŒá±ááœá¬ážáá«ááŒá®á á¡á á±á¬ááá¯ááºážáá¯ááºáááºážáá¯á¶ážáá¬ážááŸááºážáá»á¬ážáá¶á០ááááá¯á¶áž á¡á¬áá¯á¶áá¶á á¬ážááŸá¯ááŸá¬ á¡ááŒá¬ážááá¹áá¬áá áºáá¯ááœáẠááŸááá±ááŒááºážááŒá áºáááºá á¡ááŒá±á¬ááºážá¡áá¬á¡á¬ážáá¯á¶ážááᯠYouTube á០áá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá±á¬áºáááºáž áááºážááẠYouTube ááá¯ááºáá±á¬á·áá²á áááºážááŒá±áá»á¬ážááᯠááá·áºáá»ááºáá¯á¶ážá០áááºážááŒá±áá»á¬ážáá°áᬠáááºáá°ážáá²ááœáẠááá·áºáá¬ážááá²á·ááá¯á· á¡ááŒá¬ážá¡áá¬áá áºáá¯ááŒá áºááá·áº áá¯á¶ááŒá¯á¶ááŒá®áž ááááºážáá»á¯ááºáá¬ážáááºá áá«ááœá±á¡á¬ážáá¯á¶ážá á¡ááŒá¶ááŒá¯áá»ááºááœá±áá«á
source: www.habr.com