#android #vimeo #vimeo-api #vimeo-player #vimeo-android
#Android #vimeo #vimeo-api #vimeo-player #vimeo-android
Вопрос:
Я использовал сетевую библиотеку Vimeo в своем приложении для Android для воспроизведения видео с помощью просмотра видео, используя официальную библиотеку Vimeo.
Я аутентифицирую API с помощью токена
Проблема с кодом заключается в том, что он дает мне нулевое значение для видеофайлов. Когда я даю ссылку в формате b, указанную ниже, между комментарием к коду
Вот мой код
public class PlayActivity extends AppCompatActivity {
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
videoView = findViewById(R.id.player);
// Getting access Token
String accessToken = getString(R.string.access_token);
Configuration.Builder configBuilder = new Configuration.Builder(accessToken)
.enableCertPinning(false);
//Vimeo Client autenticated
VimeoClient.initialize(configBuilder.build());
// the video uri; if you have a video, this is video.uri
Я не знаю, какой URI я должен передать, поэтому я передаю URI в формате 2
a) https://player.vimeo.com/videos/123456789
Это выдает мне ошибку из метода сбоя
I / TAG5: ошибка Vimeo: используйте JsonReader.setLenient(true), чтобы принять неверно сформированный JSON в строке 1, столбец 1, путь $
б) https://player.vimeo.com/videos/123456789/config
I/ TAG1: Video: com.vimeo.networking.model.Video @ 0 I / TAG2: видеофайлы пустые
Итак, наконец, я использую ссылку b
final String uri = "https://player.vimeo.com/videos/123456789/config";
GsonDeserializer gsonDeserializer = new GsonDeserializer();
VimeoClient.getInstance().fetchNetworkContent(uri, new ModelCallback<Video>(Video.class) {
@Override
public void success(Video video) {
Toast.makeText(PlayActivity.this, "Sucessful" video, Toast.LENGTH_SHORT).show();
Log.i("TAG1", "Video: " video);
ArrayList<VideoFile> videoFiles = video.files;
Log.i("TAG2", "VideoFiles " videoFiles);
// I am getting null Value of **videoFiles** and it's not passing the if block with link b above mentioned
if (videoFiles != null amp;amp; !videoFiles.isEmpty()) {
VideoFile videoFile = videoFiles.get(0); // you could sort these files by size, fps, width/height
Log.i("TAG3", "VideoFiles " videoFiles);
String link = videoFile.getLink();
Log.i("TAG4", "link " link);
// load link
MediaController mediaController = new MediaController(PlayActivity.this);
mediaController.setAnchorView(videoView);
videoView.setVisibility(View.VISIBLE);
videoView.setVideoURI(Uri.parse(link));
videoView.setMediaController(null);
videoView.requestFocus();
videoView.start();
}
}
@Override
public void failure(VimeoError error) {
Log.i("TAG5", "vimeo error : " error.getErrorMessage());
Toast.makeText(PlayActivity.this, "failure due to " error.getErrorMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
Ответ №1:
Я только что получил решение, подумал о том, чтобы опубликовать его здесь. Таким образом, это может помочь другим
Ответ прост, и я получил видеофайл (TAG1) и ссылку (TAG2) в обход ссылки в этом формате
https://api.vimeo.com/me/videos/123456789
Итак, окончательный код будет выглядеть так
final String uri = "https://api.vimeo.com/me/videos/123456789";
вместо этого
final String uri = "https://player.vimeo.com/videos/123456789/config";
Вот мой полный код, который помогает мне воспроизводить видео в приложении Android с помощью сетевой библиотеки Vimeo
Представление окончательного кода
public class PlayActivity extends AppCompatActivity {
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
videoView = findViewById(R.id.player);
// Getting access Token
String accessToken = getString(R.string.access_token);
Configuration.Builder configBuilder = new Configuration.Builder(accessToken)
.enableCertPinning(false);
//Vimeo Client autenticated
VimeoClient.initialize(configBuilder.build());
// the video uri; if you have a video, this is video.uri
final String uri = "https://api.vimeo.com/me/videos/123456789";
VimeoClient.getInstance().fetchNetworkContent(uri, new ModelCallback<Video>(Video.class) {
@Override
public void success(Video video) {
Toast.makeText(PlayActivity.this, "Sucessful" video, Toast.LENGTH_SHORT).show();
ArrayList<VideoFile> videoFiles = video.files;
Log.i("TAG1", "videoFiles " videoFiles);
if (videoFiles != null amp;amp; !videoFiles.isEmpty()) {
VideoFile videoFile = videoFiles.get(0); // you could sort these files by size, fps, width/height
String link = videoFile.getLink();
Log.i("TAG2", "link " link);
// load link
// use the link to play the video by **EXO Player** or **Video View**
// Start your video player here
}
}
@Override
public void failure(VimeoError error) {
Log.i("TAG3", "vimeo error : " error.getErrorMessage());
Toast.makeText(PlayActivity.this, "failure due to " error.getErrorMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
Комментарии:
1. Как создать ссылку в этом формате: api.vimeo.com/me/videos/123456789