Android için ApsaraVideo Player SDK kullanarak video oynatmaya başlayın.
Ön Koşullar
Android için ApsaraVideo Player'ın SDK entegrasyonunu tamamladınız.
Açık Kaynaklı Örnek Proje
Ayrıntılı kod örnekleri için API-Example içindeki BasicPlayback modülüne bakın. Java tabanlı bu Android örnek projesi, temel oynatıcı özelliklerini hızlıca entegre etmenize yardımcı olur.
Video oynatmadan önce veya oynatma anormal olduğunda; alan adı, sertifika, URL imzalama ve CNAME gibi video oynatma URL'sine ilişkin bilgileri kontrol ederek yaygın sorunları tespit etmenize ve çözmenize yardımcı olan Sorun Giderme aracını kullanabilirsiniz.
Yordam
Adım 1: Oynatıcıyı oluşturun
AliPlayerFactory sınıfını kullanarak bir AliPlayer örneği oluşturun.
// Create a player instance.
AliPlayer mAliPlayer = AliPlayerFactory.createAliPlayer(context);
// Pass the traceId.
// Optional: Use the Tracing Analysis feature. If an exception occurs during video playback with the ApsaraVideo Player SDK, this feature performs end-to-end tracing of abnormal playback for a specific user or session. This helps you quickly diagnose issues and improve playback experience administration.
// Define the traceId value. It must be a unique identifier for your user or device, such as your business's user ID, or a device ID like an International Mobile Equipment Identity (IMEI) or identifier for advertisers (IDFA).
mAliPlayer.setTraceId("traceId");
Oynatıcının oynatma kalitesi izleme, Tracing Analysis ve video oynatma istatistikleri özellikleri enstrümantasyon günlüklerinin raporlanmasına bağlıdır. Oynatma kalitesi izleme, genel oynatma kalitesine ilişkin veriler sağlar. Tracing Analysis, belirli kullanıcıları veya cihazları konumlandırır, oynatma davranışlarını analiz eder ve oynatma hataları gibi sorunların hızla belirlenmesine yardımcı olur.
Oynatıcıyı oluştururken kullanılabilen özellikler, setTraceId parametresinin yapılandırmasına bağlıdır:
setTraceIdparametresini ayarlamazsanız (varsayılan): Enstrümantasyon günlüklerinin raporlanması etkinleştirilir. Bu sayede oynatma kalitesi izleme ve video oynatma istatistikleri özelliklerini kullanabilirsiniz. Tracing Analysis özelliği kullanılamaz.setTraceIdparametresini bir traceId değerine ayarlarsanız: traceId değeri kullanıcı tarafından tanımlanır ve işletmenizin kullanıcı kimliği veya Uluslararası Mobil Ekipman Kimliği (IMEI) ya da reklamverenler için tanımlayıcı (IDFA) gibi benzersiz bir cihaz veya kullanıcı tanımlayıcısı olması gerekir. traceId değerini ayarladıktan sonra enstrümantasyon günlüklerinin raporlanması etkinleştirilir. Bu sayede oynatma kalitesi izleme, Tracing Analysis ve video oynatma istatistikleri özelliklerini kullanabilirsiniz.setTraceIdparametresiniDisableAnalyticsolarak ayarlarsanız: Enstrümantasyon günlüklerinin raporlanması devre dışı bırakılır. Oynatma kalitesi izleme, Tracing Analysis ve video oynatma istatistikleri özellikleri kullanılamaz.
Adım 2: Görüntüleme görünümünü ayarlayın
Oynatıcı üç tür görünümü destekler: AliDisplayView, SurfaceView ve TextureView.
AliDisplayView: Standartlaştırılmış arabirimlere sahip, SDK tarafından kapsüllenmiş tek tip bir görünüm bileşenidir. Hızlı entegrasyonlar ve basit UI senaryoları için uygundur.
SurfaceView / TextureView: Uygulama katmanına görünüm yaşam döngüsü ve işleme mantığı üzerinde tam denetim sağlayan yerel görünümlerdir. Karmaşık görünüm hiyerarşileri veya ayrıntılı denetim gerektiren senaryolar için uygundur.
-
Görünümü XML dosyasında bildirin.
AliDisplayView
<!-- Player rendering view --> <com.aliyun.player.videoview.AliDisplayView android:id="@+id/ali_display_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" />SurfaceView
<!-- Player rendering view --> <SurfaceView android:id="@+id/surface_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" />TextureView
<!-- Player rendering view --> <TextureView android:id="@+id/texture_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /> -
Görüntüleme görünümünü ayarlayın.
AliDisplayView
Görünümü eklemek için oynatıcının
setDisplayViewyöntemini çağırın.AliDisplayView mAliDisplayView = findViewById(R.id.display_view); // Set the player view type using setPreferDisplayView(). mAliDisplayView.setPreferDisplayView(AliDisplayView.DisplayViewType.SurfaceView); mAliPlayer.setDisplayView(mAliDisplayView);SurfaceView
Görünümü eklemek için oynatıcının
setSurfaceyöntemini çağırın.SurfaceView mSurfaceView = findViewById(R.id.surface_view); mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(@NonNull SurfaceHolder holder) { mAliPlayer.setSurface(holder.getSurface()); } @Override public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) { mAliPlayer.surfaceChanged(); } @Override public void surfaceDestroyed(@NonNull SurfaceHolder holder) { mAliPlayer.setSurface(null) } });TextureView
Görünümü eklemek için oynatıcının
setSurfaceyöntemini çağırın.TextureView mTextureView = findViewById(R.id.texture_view); mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { @Override public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) { mAliPlayer.setSurface(new Surface(surface)); } @Override public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int width, int height) { mAliPlayer.surfaceChanged(); } @Override public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) { mAliPlayer.setSurface(null); return true; } @Override public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) { } });
Adım 3: Oynatma kaynağını ayarlayın
VidAuth oynatma (Önerilen)
VidAuth vidAuth = new VidAuth();
vidAuth.setVid("Your Vid");// Required. The video ID (VideoId).
vidAuth.setPlayAuth("<yourPlayAuth>");// Required. The playback credential. Call the GetVideoPlayAuth operation of ApsaraVideo VOD to generate the credential.
vidAuth.setRegion("The region ID");// For ApsaraVideo Player SDK V5.5.5.0 and later, this parameter is deprecated. You do not need to set the region because the player automatically parses it. For versions earlier than V5.5.5.0, this parameter is required. It specifies the region where ApsaraVideo VOD is activated. The default value is cn-shanghai.
// vidAuth.setAuthTimeout(3600); // The validity period of the playback URL, in seconds. This value overwrites the validity period for URL signing that is set in the ApsaraVideo VOD console. If you do not pass this parameter, the default value 3600 is used. If you set this parameter, make sure that the period is longer than the video duration to prevent the playback URL from expiring before playback is complete.
mAliPlayer.setDataSource(vidAuth);
VidSts oynatma
VidSts vidSts = new VidSts();
vidSts.setVid("Your Vid");// Required. The video ID (VideoId).
vidSts.setAccessKeyId("<yourAccessKeyId>");// Required. The AccessKey ID of the temporary AccessKey pair. Call the AssumeRole operation of Security Token Service (STS) to generate it.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Required. The AccessKey secret of the temporary AccessKey pair. Call the AssumeRole operation of STS to generate it.
vidSts.setSecurityToken("<yourSecurityToken>");// Required. The STS token. Call the AssumeRole operation of STS to generate it.
vidSts.setRegion("The region ID");// Required. The region where ApsaraVideo VOD is activated. The default value is cn-shanghai.
mAliPlayer.setDataSource(vidSts);
UrlSource oynatma
// Create a playback source object and set the playback URL.
UrlSource urlSource = new UrlSource();
// Required. The playback URL. It can be a third-party video-on-demand (VOD) URL, a playback URL from ApsaraVideo VOD, or a local video URL.
urlSource.setUri("The playback URL");
mAliPlayer.setDataSource(urlSource);
Diğer oynatma kaynağı seçenekleri hakkında daha fazla bilgi için Temel Özellikler bölümüne bakın.
Adım 4: Oynatmayı başlatın
// Prepare for playback.
mAliPlayer.prepare();
// Start playback.
mAliPlayer.start();
Adım 5: Oynatmayı sonlandırın
Oynatmayı durdurmadan önce, işleme kaynaklarını serbest bırakmak için oynatıcı görünümünün bağlantısını kaldırın. Kullandığınız oynatıcı görünüm türüne göre bağlantı kaldırma yöntemini seçin:
SurfaceView / TextureView: Görünümün bağlantısını kaldırmak için
setSurface(null)öğesini çağırın.AliDisplayView: Görünümün bağlantısını kaldırmak için
setDisplayView(null)öğesini çağırın.
Tam oynatma sonlandırma kodu aşağıdaki gibidir:
// Unbind the player view.
// For SurfaceView / TextureView:
aliPlayer.setSurface(null);
// For AliDisplayView:
aliPlayer.setDisplayView(null);
// Stop playback.
mAliPlayer.stop();
// Destroy the player.
mAliPlayer.release();
// Clear the reference to avoid a memory leak.
mAliPlayer = null;
Referanslar
Oynatma denetimi, olay dinleyicileri ve diğer oynatıcı yetenekleri hakkında daha fazla bilgi için Temel Özellikler bölümüne bakın.