Topik ini menjelaskan cara menggunakan operasi API yang terkait dengan fitur Studio Produksi.
Catatan
Topik ini membahas fitur Studio Produksi berdasarkan operasi API, yang berbeda dari Studio Produksi sebenarnya. Untuk menggunakan fitur Studio Produksi berdasarkan operasi API, Anda harus mengembangkan halaman web frontend untuk memungkinkan interaksi.
Konsol ApsaraVideo Live menyediakan Studio Produksi dan halaman web frontend untuk mengatur video. Jika Anda menggunakan Studio Produksi di konsol, Anda dapat melewati topik ini. Untuk informasi lebih lanjut, lihat Memulai dengan Studio Produksi.
Pembaca yang Ditujukan
Pengembang Java atau PHP. Untuk informasi lebih lanjut, lihat Gunakan SDK Server untuk Java.
Memahami fitur dasar Director.
Pengembang yang memahami fitur dasar ApsaraVideo Live.
Prasyarat
Fitur Studio Produksi diaktifkan, dan nama domain telah ditambahkan. Untuk informasi lebih lanjut, lihat Aktifkan Fitur Studio Produksi.
Anda dapat mengunduh ApsaraVideo Live SDK.
Prosedur
Konfigurasikan Studio Produksi.
Deskripsi
Setelah membuat studio produksi, Anda dapat mengonfigurasi pengaturannya sesuai kebutuhan, seperti nama studio produksi, nama domain, transkoding, perekaman, penundaan aliran, dan sumber daya cadangan.
Operasi API terkait
SetCasterConfig - Konfigurasikan studio produksi
Contoh Kode
/** * Konfigurasikan studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @throws Exception Melempar pengecualian jika terjadi kesalahan selama konfigurasi. */ private void setCasterConfig(Client client, String casterId) throws Exception { SetCasterConfigRequest request = new SetCasterConfigRequest(); request.setCasterId(casterId); // Konfigurasikan nama domain. request.setDomainName("domainName"); // Konfigurasi transkoding. JSONObject transcodeConfig = new JSONObject(); // Konfigurasi transkoding streaming langsung. lsd: definisi standar. lld: definisi rendah. lud: resolusi ultra-tinggi. lhd: definisi tinggi dengan rotasi otomatis. daobo-lsd: definisi standar. daobo-lld: definisi rendah. daobo-lud: resolusi ultra-tinggi. daobo-lhd: definisi tinggi. JSONObject liveTemplateIds = new JSONObject(); JSONArray locationId = new JSONArray(); locationId.add("lld"); liveTemplateIds.put("LocationId", locationId); transcodeConfig.put("LiveTemplateIds", liveTemplateIds); // Template transkoding studio produksi. lp_ld: definisi rendah. lp_sd: definisi standar. lp_hd: definisi tinggi. lp_ud: resolusi ultra-tinggi. lp_ld_v: vertikal definisi rendah. lp_sd_v: vertikal definisi standar. lp_hd_v: vertikal definisi tinggi. lp_ud_v: vertikal resolusi ultra-tinggi. transcodeConfig.put("CasterTemplate", "lp_sd"); request.setTranscodeConfig(transcodeConfig.toJSONString()); // Konfigurasikan parameter rekaman streaming langsung untuk studio produksi. JSONObject recordConfig = new JSONObject(); recordConfig.put("endpoint", ""); recordConfig.put("ossBucket", ""); recordConfig.put("videoFormat", ""); recordConfig.put("interval", 5); request.setRecordConfig(recordConfig.toJSONString()); SetCasterConfigResponse response = client.setCasterConfig(request); System.out.println("Tambah konfigurasi studio produksi. response: " + JSON.toJSONString(response)); }Edit Sumber Video.
Deskripsi
Konfigurasikan sumber video yang digunakan untuk menghasilkan konten keluaran. Anda dapat menggunakan aliran langsung dan video sesuai permintaan sebagai sumber video.
Operasi API terkait
AddCasterVideoResource - Tambahkan sumber video ke studio produksi
DescribeCasterVideoResources - Kueri sumber video studio produksi
ModifyCasterVideoResource - Modifikasi sumber video studio produksi
DeleteCasterVideoResource - Hapus sumber video dari studio produksi
Contoh Kode
/** * Tambahkan sumber video ke studio produksi yang ditentukan. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi tempat Anda ingin menambahkan sumber video. * @return ID sumber video yang ditambahkan. * @throws Exception Melempar pengecualian jika pemanggilan API gagal atau terjadi pengecualian lainnya. */ private String addCasterVideoResource(Client client, String casterId) throws Exception { AddCasterVideoResourceRequest addCasterVideoResourceRequest = new AddCasterVideoResourceRequest(); addCasterVideoResourceRequest.setCasterId(casterId); addCasterVideoResourceRequest.setResourceName("testResourceName"); addCasterVideoResourceRequest.setMaterialId(""); // Atur jumlah putaran ulang. Nilainya bisa dari -1 hingga 60. Nilai default adalah 0, yang menunjukkan tidak ada putaran ulang. -1 menunjukkan loop tak terbatas. addCasterVideoResourceRequest.setRepeatNum(-1); AddCasterVideoResourceResponse addCasterVideoResourceResponse = client.addCasterVideoResource(addCasterVideoResourceRequest); System.out.println("Tambah sumber video. response: " + JSON.toJSONString(addCasterVideoResourceResponse)); return addCasterVideoResourceResponse.getBody().getResourceId(); } /** * Kueri daftar sumber daya sumber video untuk studio produksi tertentu. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi yang ingin Anda kueri. * @return DescribeCasterVideoResourcesResponse Objek respons yang berisi daftar sumber daya sumber video. * @throws Exception Pengecualian yang mungkin dilemparkan selama pemanggilan API. */ private DescribeCasterVideoResourcesResponse describeCasterVideoResources(Client client, String casterId) throws Exception { DescribeCasterVideoResourcesRequest describeCasterVideoResourcesRequest = new DescribeCasterVideoResourcesRequest(); describeCasterVideoResourcesRequest.setCasterId(casterId); DescribeCasterVideoResourcesResponse describeCasterVideoResourcesResponse = client.describeCasterVideoResources(describeCasterVideoResourcesRequest); System.out.println("Kueri daftar sumber video. response: " + JSON.toJSONString(describeCasterVideoResourcesResponse)); return describeCasterVideoResourcesResponse; } /** * Modifikasi sumber video studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param resourceId ID sumber daya. * @throws Exception Melempar pengecualian jika pemanggilan API gagal. */ private void modifyCasterVideoResource(Client client, String casterId, String resourceId) throws Exception { ModifyCasterVideoResourceRequest modifyCasterVideoResourceRequest = new ModifyCasterVideoResourceRequest(); modifyCasterVideoResourceRequest.setCasterId(casterId); modifyCasterVideoResourceRequest.setResourceId(resourceId); modifyCasterVideoResourceRequest.setResourceName("newResourceName"); modifyCasterVideoResourceRequest.setMaterialId(""); modifyCasterVideoResourceRequest.setVodUrl(""); modifyCasterVideoResourceRequest.setRepeatNum(-1); ModifyCasterVideoResourceResponse modifyCasterVideoResourceResponse = client.modifyCasterVideoResource(modifyCasterVideoResourceRequest); System.out.println("Modifikasi sumber video. response: " + JSON.toJSONString(modifyCasterVideoResourceResponse)); } /** * Hapus sumber video. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param resourceId ID sumber daya. * @throws Exception Melempar pengecualian jika pemanggilan API gagal. */ private void deleteCasterVideoResource(Client client, String casterId, String resourceId) throws Exception { DeleteCasterVideoResourceRequest deleteCasterVideoResourceRequest = new DeleteCasterVideoResourceRequest(); deleteCasterVideoResourceRequest.setCasterId(casterId); deleteCasterVideoResourceRequest.setResourceId(resourceId); DeleteCasterVideoResourceResponse deleteCasterVideoResourceResponse = client.deleteCasterVideoResource(deleteCasterVideoResourceRequest); System.out.println("Hapus sumber video. response: " + JSON.toJSONString(deleteCasterVideoResourceResponse)); }Edit Komponen.
Deskripsi
Konfigurasikan komponen yang digunakan untuk menghasilkan konten keluaran. Komponen yang didukung mencakup teks dan gambar.
Operasi API terkait
CatatanAnda harus mengonfigurasi informasi berikut tentang komponen:
Jika komponennya adalah teks, atur properti seperti isi teks, proporsi font, dan warna.
Jika komponennya adalah gambar, tentukan ID komponen gambar.
Contoh Kode
/** * Tambahkan komponen teks ke studio produksi yang ditentukan. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @return Pengenal unik (ComponentId) dari komponen baru yang ditambahkan. * @throws Exception Melempar pengecualian jika terjadi kesalahan selama permintaan. */ private String addCasterComponent(Client client, String casterId) throws Exception { // Konstruksi parameter componentLayer: Atur ukuran dan posisi komponen di layar. JSONObject componentLayer = new JSONObject(); componentLayer.put("HeightNormalized", 0.2); componentLayer.put("WidthNormalized", 0.2); JSONArray positionNormalized = new JSONArray(); positionNormalized.add("0.3"); positionNormalized.add("0.3"); componentLayer.put("PositionNormalized", positionNormalized); componentLayer.put("PositionRefer", "topLeft"); // Konstruksi konten layer teks: Atur properti seperti teks, warna, dan font. JSONObject textLayerContent = new JSONObject(); // Komponen TextLayerContent. textLayerContent.put("Text", "hello world!"); textLayerContent.put("Color", 0xff0000); textLayerContent.put("FontName", "KaiTi"); textLayerContent.put("SizeNormalized", 0.3F); textLayerContent.put("BorderWidthNormalized", 0.3F); textLayerContent.put("BorderColor", 0xff0000); // Konstruksi objek permintaan untuk menambahkan komponen dan atur parameter terkait. AddCasterComponentRequest addCasterComponentRequest = new AddCasterComponentRequest(); // Atur properti elemen komponen. addCasterComponentRequest.setCasterId(casterId); // Digunakan untuk menentukan posisi komponen. Anda dapat mengatur maksimal satu komponen untuk setiap posisi. Formatnya harus "RC01 hingga RC99". addCasterComponentRequest.setLocationId("RC01"); // Nama komponen. addCasterComponentRequest.setComponentName("testComponentName"); // Jenis komponen. Nilai valid: text: komponen teks. Anda juga harus mengatur parameter TextLayerContent. image: komponen gambar. Anda juga harus mengatur parameter ImageLayerContent. caption: komponen teks. Anda juga harus mengatur parameter CaptionLayerContent. addCasterComponentRequest.setComponentType("text"); addCasterComponentRequest.setTextLayerContent(textLayerContent.toJSONString()); // Efek komponen. Nilai valid: none: (default) tanpa efek. animateH: gulir horizontal. animateV: gulir vertikal. addCasterComponentRequest.setEffect("animateH"); // Ukuran layer komponen. addCasterComponentRequest.setComponentLayer(componentLayer.toJSONString()); // Kirim permintaan dan peroleh respons. AddCasterComponentResponse addCasterComponentResponse = client.addCasterComponent(addCasterComponentRequest); System.out.println("Tambah komponen, nilai kembali: " + JSON.toJSONString(addCasterComponentResponse)); // Kembalikan ID komponen baru. return addCasterComponentResponse.getBody().getComponentId(); } /** * Kueri daftar komponen studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi yang ingin Anda kueri. * @param componentId ID komponen yang ingin Anda kueri. * @return DescribeCasterComponentsResponse Objek respons untuk daftar komponen. * @throws Exception Melempar pengecualian jika terjadi kesalahan selama permintaan API atau pemrosesan. */ private DescribeCasterComponentsResponse describeCasterComponents(Client client, String casterId, String componentId) throws Exception { // Konstruksi objek permintaan untuk mengkueri daftar komponen studio produksi. DescribeCasterComponentsRequest describeCasterComponentsRequest = new DescribeCasterComponentsRequest(); describeCasterComponentsRequest.setCasterId(casterId); describeCasterComponentsRequest.setComponentId(componentId); DescribeCasterComponentsResponse describeCasterComponentsResponse = client.describeCasterComponents(describeCasterComponentsRequest); System.out.println("Kueri daftar komponen, nilai kembali: " + JSON.toJSONString(describeCasterComponentsResponse)); return describeCasterComponentsResponse; } /** * Perbarui komponen studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param componentId ID komponen. * @throws Exception Melempar pengecualian jika terjadi kesalahan selama permintaan API atau pemrosesan. */ private void modifyCasterComponent(Client client, String casterId, String componentId) throws Exception { JSONObject componentLayer = new JSONObject(); componentLayer.put("HeightNormalized", 0.6); componentLayer.put("WidthNormalized", 0.6); JSONArray positionNormalized = new JSONArray(); positionNormalized.add("0.3"); positionNormalized.add("0.3"); componentLayer.put("PositionNormalized", positionNormalized); componentLayer.put("PositionRefer", "topLeft"); JSONObject textLayerContent = new JSONObject();// Komponen TextLayerContent. textLayerContent.put("Text", "hello world!"); textLayerContent.put("Color", 0xff0000); textLayerContent.put("FontName", "KaiTi"); textLayerContent.put("SizeNormalized", 0.3F); textLayerContent.put("BorderWidthNormalized", 0.3F); textLayerContent.put("BorderColor", 0xff0000); ModifyCasterComponentRequest modifyCasterComponentRequest = new ModifyCasterComponentRequest(); // Atur properti elemen komponen. modifyCasterComponentRequest.setCasterId(casterId); modifyCasterComponentRequest.setComponentId(componentId); modifyCasterComponentRequest.setComponentName("newComponentName"); modifyCasterComponentRequest.setComponentType("text"); modifyCasterComponentRequest.setTextLayerContent(textLayerContent.toJSONString()); modifyCasterComponentRequest.setEffect("none"); // Tanpa efek. modifyCasterComponentRequest.setComponentLayer(componentLayer.toJSONString()); ModifyCasterComponentResponse modifyCasterComponentResponse = client.modifyCasterComponent(modifyCasterComponentRequest); System.out.println("Modifikasi komponen, nilai kembali: " + JSON.toJSONString(modifyCasterComponentResponse)); } /** * Hapus komponen studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param componentId ID komponen. * @throws Exception Pengecualian yang mungkin dilemparkan selama operasi penghapusan. */ private void deleteCasterComponent(Client client, String casterId, String componentId) throws Exception { // Konstruksi objek permintaan untuk menghapus komponen dan atur parameter. DeleteCasterComponentRequest deleteCasterComponentRequest = new DeleteCasterComponentRequest(); deleteCasterComponentRequest.setCasterId(casterId); deleteCasterComponentRequest.setComponentId(componentId); // Panggil antarmuka klien untuk melakukan operasi penghapusan. DeleteCasterComponentResponse deleteCasterComponentResponse = client.deleteCasterComponent(deleteCasterComponentRequest); // Keluarkan hasil penghapusan. System.out.println("Hapus komponen, nilai kembali: " + JSON.toJSONString(deleteCasterComponentResponse)); }Edit Tata Letak.
Deskripsi
Konfigurasikan tata letak konten keluaran. Anda dapat menyesuaikan layar dan lokasinya. Hingga empat layar dapat dibuat dalam satu tata letak.
Operasi API terkait
Contoh Kode
/** * Tambahkan tata letak ke studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi untuk dioperasikan. * @return ID tata letak yang baru dibuat. * @throws Exception Melempar pengecualian jika pemanggilan API gagal atau terjadi pengecualian lainnya. */ private String addCasterLayout(Client client, String casterId) throws Exception { // Buat objek permintaan untuk menambahkan tata letak studio produksi dan atur parameter dasar. AddCasterLayoutRequest addCasterLayoutRequest = new AddCasterLayoutRequest(); addCasterLayoutRequest.setCasterId(casterId); addCasterLayoutRequest.setBlendList(Arrays.asList("RV01")); addCasterLayoutRequest.setMixList(Arrays.asList("RV01")); // Konfigurasikan parameter layer video. List<AddCasterLayoutRequest.AddCasterLayoutRequestVideoLayer> videoLayers = new ArrayList<>(); AddCasterLayoutRequest.AddCasterLayoutRequestVideoLayer videoLayer = new AddCasterLayoutRequest.AddCasterLayoutRequestVideoLayer(); videoLayer.setFillMode("fit"); videoLayer.setHeightNormalized(0.5F); videoLayer.setWidthNormalized(0.5F); videoLayer.setPositionRefer("topLeft"); videoLayer.setPositionNormalized(Arrays.asList(0.1F, 0.1F)); videoLayer.setFixedDelayDuration(0); videoLayers.add(videoLayer); addCasterLayoutRequest.setVideoLayer(videoLayers); // Konfigurasikan parameter layer audio. List<AddCasterLayoutRequest.AddCasterLayoutRequestAudioLayer> audioLayers = new ArrayList<>(); AddCasterLayoutRequest.AddCasterLayoutRequestAudioLayer audioLayer = new AddCasterLayoutRequest.AddCasterLayoutRequestAudioLayer(); audioLayer.setVolumeRate(1.0F); audioLayer.setValidChannel("all"); audioLayer.setFixedDelayDuration(0); audioLayers.add(audioLayer); addCasterLayoutRequest.setAudioLayer(audioLayers); // Panggil API untuk menambahkan tata letak studio produksi. AddCasterLayoutResponse addCasterLayoutResponse = client.addCasterLayout(addCasterLayoutRequest); System.out.println("Tambah tata letak studio produksi. response:" + JSON.toJSONString(addCasterLayoutResponse)); return addCasterLayoutResponse.getBody().getLayoutId(); } /** * Kueri daftar tata letak studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param layoutId ID tata letak. * @return DescribeCasterLayoutsResponse Objek respons untuk daftar tata letak. * @throws Exception Pengecualian yang mungkin dilemparkan selama pemanggilan API. */ private DescribeCasterLayoutsResponse describeCasterLayouts(Client client, String casterId, String layoutId) throws Exception { // Konstruksi parameter permintaan untuk mengkueri daftar tata letak. DescribeCasterLayoutsRequest describeCasterLayoutsRequest = new DescribeCasterLayoutsRequest(); describeCasterLayoutsRequest.setCasterId(casterId); describeCasterLayoutsRequest.setLayoutId(layoutId); // Panggil API klien untuk mengkueri daftar tata letak. DescribeCasterLayoutsResponse describeCasterLayoutsResponse = client.describeCasterLayouts(describeCasterLayoutsRequest); System.out.println("Kueri daftar tata letak, nilai kembali: " + JSON.toJSONString(describeCasterLayoutsResponse)); return describeCasterLayoutsResponse; } /** * Modifikasi tata letak studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi untuk dimodifikasi. * @param layoutId ID template tata letak untuk diterapkan. * @throws Exception Melempar pengecualian jika pemanggilan API gagal atau parameter tidak valid. */ private void modifyCasterLayout(Client client, String casterId, String layoutId) throws Exception { ModifyCasterLayoutRequest modifyCasterLayoutRequest = new ModifyCasterLayoutRequest(); modifyCasterLayoutRequest.setCasterId(casterId); modifyCasterLayoutRequest.setLayoutId(layoutId); modifyCasterLayoutRequest.setBlendList(Arrays.asList("RV02")); modifyCasterLayoutRequest.setMixList(Arrays.asList("RV02")); // Konfigurasikan parameter layer video. List<ModifyCasterLayoutRequest.ModifyCasterLayoutRequestVideoLayer> videoLayers = new ArrayList<>(); ModifyCasterLayoutRequest.ModifyCasterLayoutRequestVideoLayer videoLayer = new ModifyCasterLayoutRequest.ModifyCasterLayoutRequestVideoLayer(); videoLayer.setFillMode("fit"); videoLayer.setHeightNormalized(1.0F); videoLayer.setWidthNormalized(1.0F); videoLayer.setPositionRefer("topLeft"); videoLayer.setPositionNormalized(Arrays.asList(0.1F, 0.1F)); videoLayer.setFixedDelayDuration(0); videoLayers.add(videoLayer); modifyCasterLayoutRequest.setVideoLayer(videoLayers); // Konfigurasikan parameter layer audio. List<ModifyCasterLayoutRequest.ModifyCasterLayoutRequestAudioLayer> audioLayers = new ArrayList<>(); ModifyCasterLayoutRequest.ModifyCasterLayoutRequestAudioLayer audioLayer = new ModifyCasterLayoutRequest.ModifyCasterLayoutRequestAudioLayer(); audioLayer.setVolumeRate(1.0F); audioLayer.setValidChannel("all"); audioLayer.setFixedDelayDuration(0); audioLayers.add(audioLayer); modifyCasterLayoutRequest.setAudioLayer(audioLayers); // Panggil API untuk memodifikasi tata letak studio produksi dan keluarkan respons. ModifyCasterLayoutResponse modifyCasterLayoutResponse = client.modifyCasterLayout(modifyCasterLayoutRequest); System.out.println("Modifikasi tata letak studio produksi. response:" + JSON.toJSONString(modifyCasterLayoutResponse)); } /** * Hapus tata letak studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi untuk dioperasikan. * @param layoutId ID tata letak untuk dihapus. * @throws Exception Melempar pengecualian jika operasi penghapusan gagal. */ private void deleteCasterLayout(Client client, String casterId, String layoutId) throws Exception { // Konstruksi parameter permintaan untuk menghapus tata letak studio produksi. DeleteCasterLayoutRequest deleteCasterLayoutRequest = new DeleteCasterLayoutRequest(); deleteCasterLayoutRequest.setCasterId(casterId); deleteCasterLayoutRequest.setLayoutId(layoutId); // Panggil antarmuka klien untuk melakukan operasi penghapusan dan keluarkan respons. DeleteCasterLayoutResponse deleteCasterLayoutResponse = client.deleteCasterLayout(deleteCasterLayoutRequest); System.out.println("Hapus tata letak studio produksi. response:" + JSON.toJSONString(deleteCasterLayoutResponse)); }Mulai Studio Produksi.
Contoh Kode
Setelah membuat dan mengonfigurasi Studio Produksi, Anda dapat memulainya untuk menjalankan tugas pemrosesan audio dan video yang relevan.
Prasyarat
Pengaturan Studio Produksi telah dikonfigurasi, termasuk nama domain dan resolusi video keluaran.
Operasi API terkait
StartCaster - Mulai studio produksi
CatatanSetelah memulai Studio Produksi, informasi tentang adegan PVW dan PGM akan dikembalikan, termasuk ID adegan dan informasi tentang aliran langsung. Anda dapat menentukan adegan berdasarkan ID adegan.
Contoh Kode
/** * Mulai studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi untuk dimulai. * @return StartCasterResponse Respons untuk memulai studio produksi. * @throws Exception Pengecualian yang mungkin dilemparkan selama proses startup. */ private StartCasterResponse startCaster(Client client, String casterId) throws Exception { // Konstruksi parameter permintaan untuk memulai studio produksi. StartCasterRequest startCasterRequest = new StartCasterRequest(); startCasterRequest.setCasterId(casterId); StartCasterResponse startCasterResponse = client.startCaster(startCasterRequest); System.out.println("Studio produksi telah dimulai."); return startCasterResponse; }Perbarui Adegan.
Deskripsi
Setelah Studio Produksi dimulai, Anda dapat menerapkan tata letak atau komponen yang dikonfigurasi ke adegan tertentu.
Prasyarat
Tata letak atau komponen telah dikonfigurasi.
Adegan tertentu telah dibuat dan diaktifkan.
Operasi API terkait
UpdateCasterSceneConfig - Perbarui konfigurasi adegan studio produksi
Contoh Kode
/** * Perbarui konfigurasi adegan studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param sceneId ID adegan. * @param layoutId ID tata letak. * @param componentIds Daftar ID komponen. * @throws Exception Melempar pengecualian jika pemanggilan API gagal. */ private void updateCasterSceneConfig(Client client, String casterId, String sceneId, String layoutId, List<String> componentIds) throws Exception { // Konstruksi objek permintaan untuk memperbarui konfigurasi adegan studio produksi. UpdateCasterSceneConfigRequest updateCasterSceneConfigRequest = new UpdateCasterSceneConfigRequest(); updateCasterSceneConfigRequest.setCasterId(casterId); updateCasterSceneConfigRequest.setSceneId(sceneId); updateCasterSceneConfigRequest.setComponentId(componentIds); updateCasterSceneConfigRequest.setLayoutId(layoutId); // Panggil antarmuka klien untuk memperbarui konfigurasi adegan studio produksi. UpdateCasterSceneConfigResponse updateCasterSceneConfigResponse = client.updateCasterSceneConfig(updateCasterSceneConfigRequest); System.out.println("Perbarui konfigurasi adegan studio produksi. response:" + JSON.toJSONString(updateCasterSceneConfigResponse)); }Beralih dari PVW ke PGM.
Deskripsi
Setelah Studio Produksi dimulai, Anda dapat menerapkan pengaturan tata letak adegan PVW ke adegan PGM.
Prasyarat
Adegan PVW telah dibuat dan diaktifkan.
Adegan PGM telah dibuat dan diaktifkan.
Operasi API terkait
CopyCasterSceneConfig - Salin konfigurasi adegan studio produksi
Contoh Kode
/** * Salin konfigurasi adegan studio produksi. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param fromSceneID ID adegan sumber. * @param toSceneID ID adegan tujuan. * @throws Exception Melempar pengecualian jika operasi salin gagal. */ private void copyCasterSceneConfig(Client client, String casterId, String fromSceneID, String toSceneID) throws Exception { // Konstruksi objek permintaan untuk menyalin konfigurasi adegan studio produksi. CopyCasterSceneConfigRequest copyCasterSceneConfigRequest = new CopyCasterSceneConfigRequest(); copyCasterSceneConfigRequest.setCasterId(casterId); copyCasterSceneConfigRequest.setFromSceneId(fromSceneID); copyCasterSceneConfigRequest.setToSceneId(toSceneID); // Panggil antarmuka klien untuk melakukan operasi salin dan keluarkan hasilnya. CopyCasterSceneConfigResponse copyCasterSceneConfigResponse = client.copyCasterSceneConfig(copyCasterSceneConfigRequest); System.out.println("Salin konfigurasi adegan studio produksi. response:" + JSON.toJSONString(copyCasterSceneConfigResponse)); }Aktifkan dan Nonaktifkan Mode PVW.
Deskripsi
Setelah Studio Produksi dimulai, Anda dapat mengaktifkan dan menonaktifkan mode PVW untuk mengontrol adegan PVW. Setelah adegan PVW dinonaktifkan, perubahan pada tata letak dan sumber video dapat langsung diterapkan ke adegan PGM.
Prasyarat
Adegan PVW telah dibuat.
Operasi API terkait
Contoh Kode
/** * Aktifkan mode PVW. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param pvwSceneId ID adegan. * @throws Exception Melempar pengecualian jika pemanggilan API gagal. */ private void startCasterScene(Client client, String casterId, String pvwSceneId) throws Exception { // Konstruksi parameter permintaan untuk memulai adegan studio produksi. StartCasterSceneRequest startCasterSceneRequest = new StartCasterSceneRequest(); startCasterSceneRequest.setCasterId(casterId); startCasterSceneRequest.setSceneId(pvwSceneId); // Panggil antarmuka untuk memulai adegan studio produksi. StartCasterSceneResponse startCasterSceneResponse = client.startCasterScene(startCasterSceneRequest); System.out.println("Aktifkan adegan PVW. response:" + JSON.toJSONString(startCasterSceneResponse)); } /** * Nonaktifkan mode PVW. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param pvwSceneId ID adegan. * @throws Exception Melempar pengecualian jika pemanggilan API gagal. */ private void stopCasterScene(Client client, String casterId, String pvwSceneId) throws Exception { // Konstruksi parameter permintaan untuk menghentikan adegan studio produksi. StopCasterSceneRequest stopCasterSceneRequest = new StopCasterSceneRequest(); stopCasterSceneRequest.setCasterId(casterId); stopCasterSceneRequest.setSceneId(pvwSceneId); // Panggil antarmuka klien untuk menghentikan adegan studio produksi. StopCasterSceneResponse stopCasterSceneResponse = client.stopCasterScene(stopCasterSceneRequest); // Keluarkan respons untuk menonaktifkan adegan PVW. System.out.println("Nonaktifkan adegan PVW. response:" + JSON.toJSONString(stopCasterSceneResponse)); }Beralih ke Sumber Cadangan dan Kembali ke Aliran Langsung.
Deskripsi
Setelah Studio Produksi dimulai, Anda dapat beralih ke sumber cadangan dalam adegan PGM dan kembali ke aliran langsung.
Prasyarat
Studio Produksi telah dimulai.
ID sumber cadangan telah ditentukan.
Operasi API terkait
EffectCasterUrgent - Beralih ke sumber daya cadangan untuk studio produksi
SetCasterSceneConfig - Atur semua konfigurasi untuk adegan studio produksi
Contoh Kode
/** * Lakukan operasi beralih efek mendesak pada studio produksi untuk beralih adegan PGM ke layar cadangan. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param pgmSceneId ID adegan PGM. * @throws Exception Melempar pengecualian jika terjadi kesalahan selama pemanggilan API atau eksekusi. */ private void effectCasterUrgent(Client client, String casterId, String pgmSceneId) throws Exception { // Konstruksi objek permintaan untuk beralih efek mendesak. EffectCasterUrgentRequest effectCasterUrgentRequest = new EffectCasterUrgentRequest(); effectCasterUrgentRequest.setCasterId(casterId); effectCasterUrgentRequest.setSceneId(pgmSceneId); // Panggil antarmuka klien untuk melakukan beralih efek mendesak. EffectCasterUrgentResponse effectCasterUrgentResponse = client.effectCasterUrgent(effectCasterUrgentRequest); // Keluarkan log hasil beralih. System.out.println("Beralih adegan PGM ke layar cadangan. response: " + JSON.toJSONString(effectCasterUrgentResponse)); } /** * Atur konfigurasi adegan studio produksi untuk beralih kembali ke streaming langsung. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi. * @param pgmSceneId ID adegan PGM. * @param layoutId ID tata letak. * @throws Exception Melempar pengecualian jika pemanggilan API gagal. */ private void setCasterSceneConfig(Client client, String casterId, String pgmSceneId, String layoutId) throws Exception { // Konstruksi objek permintaan untuk mengatur konfigurasi adegan studio produksi. SetCasterSceneConfigRequest setCasterSceneConfigRequest = new SetCasterSceneConfigRequest(); setCasterSceneConfigRequest.setCasterId(casterId); setCasterSceneConfigRequest.setSceneId(pgmSceneId); setCasterSceneConfigRequest.setLayoutId(layoutId); // Untuk keluar dari pemutaran cadangan, lewatkan null. Untuk beralih ke tata letak tertentu, masukkan layoutId. // Panggil API klien untuk mengatur konfigurasi adegan studio produksi. SetCasterSceneConfigResponse setCasterSceneConfigResponse = client.setCasterSceneConfig(setCasterSceneConfigRequest); // Keluarkan respons. System.out.println("Beralih layar cadangan ke layar langsung. response: " + JSON.toJSONString(setCasterSceneConfigResponse)); }Hentikan Studio Produksi.
Deskripsi
Setelah Studio Produksi dimulai, Anda dapat menghentikannya beserta tugas pemrosesan audio dan videonya.
Prasyarat
Studio Produksi telah dimulai.
Operasi API terkait
StopCaster - Hentikan studio produksi
Contoh Kode
/** * Hentikan studio produksi yang ditentukan. * * @param client Instance klien ApsaraVideo Live. * @param casterId ID studio produksi untuk dihentikan. * @throws Exception Melempar pengecualian jika operasi untuk menghentikan studio produksi gagal. */ private void stopCaster(Client client, String casterId) throws Exception { StopCasterRequest request = new StopCasterRequest(); request.setCasterId(casterId); StopCasterResponse response = client.stopCaster(request); System.out.println("Hentikan studio produksi. response: " + JSON.toJSONString(response)); }