मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

ऑडियो और समय सीमा के साथ वीडियो कैसे रिकॉर्ड करें

उद्देश्य। डिवाइस के कैमरे से एक वीडियो रिकॉर्ड करना, वैकल्पिक रूप से ऑडियो के साथ, अवधि को सीमित करते हुए और गुणवत्ता चुनते हुए, और .mp4 फ़ाइल का पथ प्राप्त करना।

उपयोग की गई APIs

  • Camera.captureMode (Preview) — कैप्चर मोड: PHOTO, MUTED_VIDEO (बिना आवाज़ का वीडियो), AUDIO_VIDEO (वीडियो + ऑडियो)।
  • Camera.videoTimeLimit (int) — रिकॉर्डिंग की सीमा सेकंड में; 0 = कोई सीमा नहीं।
  • Camera.videoQuality (AVQuality) — HIGH, MEDIUM (Camera का डिफ़ॉल्ट), LOW। प्रत्येक मान fps, वीडियो/ऑडियो दर और स्टीरियो परिभाषित करता है।
  • Camera.shot() → String — रिकॉर्डिंग UI शुरू करता है और .mp4 का पथ लौटाता है (या null)।
  • PhotoPicker(Preview type) — जब cameraType == PICKER हो तब उपयोग की जाने वाली UI; इसमें सार्वजनिक फ़ील्ड videoTimeLimit और videoQuality हैं जिन्हें shot() पहले से ही Camera से भर देता है।

नोट। PhotoPicker में, वीडियो रिकॉर्ड करते समय, फ़ाइल /sdcard/<timestamp>.mp4 में सहेजी जाती है। videoTimeLimit picker के समय लेबल को उलटी गिनती करने पर मजबूर करता है। AUDIO_VIDEO में रिकॉर्डिंग में ऑडियो शामिल होता है (GdxRecorder.startVideoWithAudio), MUTED_VIDEO में नहीं। वीडियो मोड वाले iOS में, shot() OS के मूल कैमरे का उपयोग करते हुए videoTimeLimit/videoQuality पास करता है।

पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

package com.exemplo;

import dev.crossfly.ui.*;                   // Window, Component, Button, Label, UIConstants
import dev.crossfly.ui.layout.*;            // VerticalLayout
import dev.crossfly.device.*;               // Camera, Camera.AVQuality

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      Label resultado = new Label("");
      add(LAY_AUTO, resultado);

      Button acao = new Button("Gravar vídeo");
      acao.onAction(c ->
      {
         new Thread(() ->
         {
            Camera cam = new Camera();
            cam.cameraType     = UIConstants.CameraType.PICKER;     // CrossFly की रिकॉर्डिंग UI
            cam.captureMode    = UIConstants.Preview.AUDIO_VIDEO;   // ऑडियो सहित वीडियो (बिना आवाज़ के लिए MUTED_VIDEO का उपयोग करें)
            cam.videoQuality   = Camera.AVQuality.HIGH;             // HIGH | MEDIUM | LOW
            cam.videoTimeLimit = 30;                                // 30s; 0 = कोई सीमा नहीं

            String mp4 = cam.shot();                                // .mp4 का पाथ, या रद्द होने पर null

            Component.onUI(() ->                                    // paint thread के बाहर लौटता है
               resultado.setText(mp4 != null ? "Vídeo: " + mp4 : "Cancelado"));
         }).start();
      });
      add(LAY_AUTO, acao);
   }
}

नीचे का अंश केवल मुख्य भाग दिखाता है। चलाने के लिए, इसे ऊपर दिए गए MainWindow ढाँचे में रखें।

न्यूनतम अंश

// स्रोत में सत्यापित: Camera.java (captureMode/videoTimeLimit/videoQuality, shot()); PhotoPicker.java (startRecording, stopRecording)
import dev.crossfly.device.*;              // Camera, Camera.AVQuality
import dev.crossfly.ui.*;                  // Component, UIConstants.CameraType/Preview

new Thread(() -> {
   Camera cam = new Camera();
   cam.cameraType    = UIConstants.CameraType.PICKER;     // CrossFly की रिकॉर्डिंग UI
   cam.captureMode   = UIConstants.Preview.AUDIO_VIDEO;   // ऑडियो सहित वीडियो (बिना आवाज़ के लिए MUTED_VIDEO का उपयोग करें)
   cam.videoQuality  = Camera.AVQuality.HIGH;             // HIGH | MEDIUM | LOW
   cam.videoTimeLimit = 30;                               // 30s; 0 = कोई सीमा नहीं

   String mp4 = cam.shot();                               // .mp4 का पाथ, या रद्द होने पर null

   Component.onUI(() -> {                                 // paint thread के बाहर लौटता है
      if (mp4 != null)
         usarVideo(mp4);
   });
}).start();

और गहराई में जाएँ

क्या यह पृष्ठ उपयोगी था?