অ্যান্ড্রয়েডে একটি এআর সেশন রেকর্ড করুন এবং প্লে ব্যাক করুন

রেকর্ডিং এবং প্লেব্যাক API আপনাকে একটি নির্দিষ্ট পরিবেশের মধ্যে একবার ভিডিও এবং AR ডেটা রেকর্ড করতে এবং একটি লাইভ ক্যামেরা সেশন প্রতিস্থাপন করতে সেই সামগ্রীটি ব্যবহার করতে সক্ষম করে।

পূর্বশর্ত

এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি মৌলিক AR ধারণা এবং কীভাবে একটি ARCore সেশন কনফিগার করবেন তা বুঝতে পেরেছেন।

অন্যান্য ARCore API-এর সাথে সামঞ্জস্যপূর্ণ

সেশন ডেটা যেভাবে প্রক্রিয়া করা হয় তার কারণে, ARCore APIগুলি রেকর্ডিংয়ের সময় পর্যবেক্ষণের চেয়ে প্লেব্যাকের সময় ভিন্ন ফলাফল দিতে পারে। তারা পরবর্তী প্লেব্যাক সেশনের সময় বিভিন্ন ফলাফলও তৈরি করতে পারে। উদাহরণস্বরূপ, সনাক্ত করা ট্র্যাকেবলের সংখ্যা, তাদের সনাক্তকরণের সুনির্দিষ্ট সময় এবং সময়ের সাথে সাথে তাদের ভঙ্গি প্লেব্যাকের সময় ভিন্ন হতে পারে।

শেয়ার্ড ক্যামেরার সাথে সামঞ্জস্যপূর্ণ

শেয়ার্ড ক্যামেরা ব্যবহার করে সেশন রেকর্ড করা যায়। যাইহোক, শেয়ার্ড ক্যামেরা মোড ব্যবহার করে এই সেশনগুলির জন্য প্লেব্যাক বর্তমানে অনুপলব্ধ৷

ক্লাউড অ্যাঙ্করগুলির সাথে সামঞ্জস্যপূর্ণ

আপনি একটি সেশন রেকর্ডিং বা প্লেব্যাক করার সময় ক্লাউড অ্যাঙ্কর হোস্ট এবং সমাধান করতে পারেন।

রেকর্ডিং

একটি ARCore সেশন রেকর্ডিং শুরু করুন, বন্ধ করুন এবং স্থিতি পরীক্ষা করুন।

একটি ARCore সেশন রেকর্ড করুন

একটি ARCore সেশন রেকর্ড করতে, সেশনটি কনফিগার করুন এবং রেকর্ডিংয়ের জন্য একটি MP4 URI প্রদান করুন। session.resume() এ প্রথম কলের আগে Call session.startRecording() করুন। সেশন পুনরায় শুরু হলে রেকর্ডিং স্বয়ংক্রিয়ভাবে শুরু হয়। সেশন পজ করা হলে স্বয়ংক্রিয়ভাবে রেকর্ডিং বন্ধ করতে, RecordingConfig.setAutoStopOnPause() কল করুন। একটি আংশিক সেশন রেকর্ড করতে, সেশন চলাকালীন session.startRecording() এ কল করুন।

জাভা

// Configure the ARCore session.
Session session = new Session(context);
Uri destination = Uri.fromFile(new File(context.getFilesDir(), "recording.mp4"));
RecordingConfig recordingConfig =
        new RecordingConfig(session)
        .setMp4DatasetUri(destination)
        .setAutoStopOnPause(true);
try {
  // Prepare the session for recording, but do not start recording yet.
  session.startRecording(recordingConfig);
} catch (RecordingFailedException e) {
  Log.e(TAG, "Failed to start recording", e);
}

// Resume the ARCore session to start recording.
session.resume();

কোটলিন

// Configure the ARCore session.
val session = Session(context)
val destination = Uri.fromFile(File(context.getFilesDir(), "recording.mp4"))
val recordingConfig = RecordingConfig(session)
  .setMp4DatasetUri(destination)
  .setAutoStopOnPause(true)
session.startRecording(recordingConfig)

// Resume the ARCore session to start recording.
session.resume()

একটি সেশন রেকর্ডিং বন্ধ করুন

বর্তমানে চলমান AR সেশনে বিরতি না দিয়ে রেকর্ডিং বন্ধ করতে, session.stopRecording() এ কল করুন।

জাভা

try {
  session.stopRecording();  // Stop recording.
} catch (RecordingFailedException e) {
  Log.e(TAG, "Failed to stop recording", e);
}

কোটলিন

session.stopRecording()

রেকর্ডিং অবস্থা চেক করুন

session.getRecordingStatus() বর্তমান RecordingStatus নির্ধারণ করতে যেকোনো সময় ব্যবহার করা যেতে পারে।

জাভা

// Use any time to determine current RecordingStatus.
if (session.getRecordingStatus() == RecordingStatus.OK) {
  // Update the UI to show that the session is currently being recorded.
}

কোটলিন

// Use any time to determine current RecordingStatus.
if (session.recordingStatus == RecordingStatus.OK) {
  // Update the UI to show that the session is currently being recorded.
}

প্লেব্যাক

আগে রেকর্ড করা AR সেশন প্লে ব্যাক করুন। রিয়েল টাইমে সেশন প্লে ব্যাক হয় এবং সেশন প্লেব্যাক বা গতি সামঞ্জস্য করা যায় না।

পূর্বে রেকর্ড করা একটি সেশন প্লে ব্যাক করুন

পূর্বে রেকর্ড করা সেশন প্লে ব্যাক করতে, session.setPlaybackDatasetUri() প্রথম কল করার আগে session.resume() এ কল করুন।

session.resume() -এ প্রথম কলের কারণে প্লেব্যাক শুরু হয়ে গেলে, session.pause() কল করে সেশন বিরাম দিলে ডেটাসেটে থাকা সমস্ত ক্যামেরা ইমেজ ফ্রেম এবং অন্য কোনো রেকর্ড করা সেন্সর ডেটার প্রক্রিয়াকরণ স্থগিত হয়ে যাবে। এইভাবে বাতিল করা ক্যামেরা ইমেজ ফ্রেম এবং সেন্সর ফ্রেম ডেটা পুনরায় প্রক্রিয়া করা হবে না যখন সেশন পুনরায় শুরু করা হবে session.resume() কল করে। সেশনের জন্য AR ট্র্যাকিং সাধারণত প্রক্রিয়াকৃত ডেটার ফাঁকের কারণে ক্ষতিগ্রস্ত হবে।

জাভা

// Configure the ARCore session.
Session session = new Session(context);

// Specify the previously recorded MP4 file.
Uri recordingUri = Uri.fromFile(new File(context.getFilesDir(), "recording.mp4"));
session.setPlaybackDatasetUri(recordingUri);
…

// Start playback from the beginning of the dataset.
session.resume();
…

// Pause the AR session, but silently continue MP4 playback. Camera frames
// and other recorded sensor data is discarded while the session is paused.
session.pause();
…

// Resume the AR session. Camera frames and other sensor data from the MP4
// that was silently played back while the session was paused is not
// processed by ARCore.
session.resume();

কোটলিন

// Configure the ARCore session.
val session = Session(context)

// Specify the previously recorded MP4 file.
val recordingUri = Uri.fromFile(File(context.filesDir, "recording.mp4"))
session.playbackDatasetUri = recordingUri
…

// Start playback from the beginning of the dataset.
session.resume()
…

// Pause the AR session, but silently continue MP4 playback. Camera frames
// and other recorded sensor data is discarded while the session is paused.
session.pause()
…

// Resume the AR session. Camera frames and other sensor data from the MP4
// that was silently played back while the session was paused is not
// processed by ARCore.
session.resume()

শুরু থেকে প্লেব্যাক পুনরায় আরম্ভ করুন

ডেটাসেটের শুরু থেকে একটি প্লেব্যাক পুনরায় চালু করতে, সেশনটি বিরাম দিন এবং সেশনটি পুনরায় শুরু করার আগে একই MP4 রেকর্ডিং উল্লেখ করে, session.setPlaybackDatasetUri() কল করুন।

জাভা

session.pause();
// Pause and specify the SAME dataset:
session.setPlaybackDatasetUri(previousRecordingUri);
session.resume();  // Playback starts from the BEGINNING of the dataset.

কোটলিন

session.pause()
// Pause and specify the SAME dataset:
session.playbackDatasetUri = previousRecordingUri
session.resume()  // Playback starts from the BEGINNING of the dataset.

একটি ভিন্ন সেশন প্লে ব্যাক

একটি ভিন্ন ডেটাসেট প্লে ব্যাক করতে, সেশনটি বিরাম দিন এবং সেশন পুনরায় শুরু করার আগে নতুন ডেটাসেট নির্দিষ্ট করুন৷

জাভা

// Switch to a different dataset.
session.pause();   // Pause the playback of the first dataset.
// Specify a different dataset to use.
session.setPlaybackDatasetUri(newRecordingUri);
session.resume();  // Start playback from the beginning of the new dataset.

কোটলিন

// Switch to a different dataset.
session.pause()   // Pause the playback of the first dataset.
// Specify a different dataset to use.
session.playbackDatasetUri = newRecordingUri
session.resume()  // Start playback from the beginning of the new dataset.

প্লেব্যাক স্থিতি পরীক্ষা করুন

বর্তমান PlaybackStatus নির্ধারণ করতে যেকোনো সময় session.getPlaybackStatus() ব্যবহার করুন।

জাভা

// Use any time to determine current PlaybackStatus.
if (session.getPlaybackStatus() != PlaybackStatus.OK) {
  // Update the UI to show that the session playback has finished.
}

কোটলিন

// Use any time to determine current PlaybackStatus.
if (session.playbackStatus != PlaybackStatus.OK) {
  // Update the UI to show that the session playback has finished.
}

এরপর কি