Как загрузить видео с Youtube на SD-карту Android программно


person Android is everything for me    schedule 02.04.2014    source источник
comment
stackoverflow.com/a/9497608   -  person Sree    schedule 02.04.2014
comment
спасибо @Sreekanthss я проверю   -  person Android is everything for me    schedule 02.04.2014
comment
youtube.com/watch?v=ySuYTKkgIvg эту ссылку можно использовать для загрузки в коде который вы отправляете меня, хотя ваша ссылка @Sreekanthss ваш код показывает, как загрузить мою проблему, я не знаю, как получить эту потоковую ссылку из вышеупомянутой ссылки   -  person Android is everything for me    schedule 02.04.2014


Ответы (3)


Youtube API позволяет вам искать и перечислять видео и получать URL-адрес медиаплеера, чтобы вы могли воспроизводить видео на своей веб-странице.

Скачать видео с Youtube можно здесь

API видеоданных YouTube

Java API данных YouTube — начало работы

Он не позволяет скачивать байтовое содержимое видео — ведь Google защищает свои права и права создателей контента.

Условия использования YouTube API Google

person Lavekush Agrawal    schedule 02.04.2014
comment
Что, если у меня есть канал и я хочу, чтобы видео загружались, он все равно будет недоступен? - person RoCk RoCk; 27.04.2018

Я опаздываю, но это решение лучше всего подходит для меня, просто попробуйте это.

СПОСОБ 1

Добавьте в свой файл gradle

 allprojects {
        repositories {
            maven { url "https://jitpack.io" }
        }
    }

И зависимости

 compile 'com.github.Commit451.YouTubeExtractor:youtubeextractor:2.1.0'

Добавьте этот небольшой код, и все готово. Демонстрация ЗДЕСЬ

public class MainActivity extends AppCompatActivity {

    private static final String YOUTUBE_ID = "ea4-5mrpGfE";

    private final YouTubeExtractor mExtractor = YouTubeExtractor.create();


    private Callback<YouTubeExtractionResult> mExtractionCallback = new Callback<YouTubeExtractionResult>() {
        @Override
        public void onResponse(Call<YouTubeExtractionResult> call, Response<YouTubeExtractionResult> response) {
            bindVideoResult(response.body());
        }

        @Override
        public void onFailure(Call<YouTubeExtractionResult> call, Throwable t) {
            onError(t);
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


//        For android youtube extractor library  com.github.Commit451.YouTubeExtractor:youtubeextractor:2.1.0'
        mExtractor.extract(YOUTUBE_ID).enqueue(mExtractionCallback);

    }


    private void onError(Throwable t) {
        t.printStackTrace();
        Toast.makeText(MainActivity.this, "It failed to extract. So sad", Toast.LENGTH_SHORT).show();
    }


    private void bindVideoResult(YouTubeExtractionResult result) {

//        Here you can get download url link
        Log.d("OnSuccess", "Got a result with the best url: " + result.getBestAvailableQualityVideoUri());

        Toast.makeText(this, "result : " + result.getSd360VideoUri(), Toast.LENGTH_SHORT).show();
    }
}

Вы можете получить ссылку для скачивания в методе bindVideoResult().

СПОСОБ 2

Используя эту библиотеку android-youtubeExtractor

Добавить в файл градиента

repositories {
    maven { url "https://jitpack.io" }
}

compile 'com.github.HaarigerHarald:android-youtubeExtractor:master-SNAPSHOT'

Вот код для получения URL-адреса загрузки.

       String youtubeLink = "http://youtube.com/watch?v=xxxx";

    YouTubeUriExtractor ytEx = new YouTubeUriExtractor(this) {
        @Override
        public void onUrisAvailable(String videoId, String videoTitle, SparseArray<YtFile> ytFiles) {
            if (ytFiles != null) {
                int itag = 22;
// Here you can get download url
                String downloadUrl = ytFiles.get(itag).getUrl();
            }
        }
    };

    ytEx.execute(youtubeLink);
person Arpit Patel    schedule 08.11.2016
comment
Но в первом методе тело ответа всегда возвращает null - person Habib Mhamadi; 26.04.2020

Вы можете попробовать использовать мою библиотеку, youtube-dl-android, который позволяет легко извлекать ссылки на видео с более чем 1000 сайтов, включая YouTube, Facebook и т. д.

Шаг 1: Добавьте репозиторий jitpack в файл сборки вашего проекта.

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

Шаг 2: Добавьте зависимость

dependencies {
    implementation 'com.github.bawaviki.youtube-dl-android:library:0.7.+'
}

Шаг 3. Используйте экземпляр Youtube-dl

YoutubeDLRequest request = new YoutubeDLRequest("http://youtube.com/watch?v=xxxx");
request.setOption("-o", youtubeDLDir.getAbsolutePath() + "/%(title)s.%(ext)s");
YoutubeDL.getInstance().execute(request, (progress, etaInSeconds) -> {
    System.out.println(String.valueOf(progress) + "% (ETA " + String.valueOf(etaInSeconds) + " seconds)");
});
person bawaviki    schedule 04.06.2020