ویرایش چند دارایی

با استفاده از Transformer، می‌توانید چندین دارایی رسانه مانند ویدیوها، تصاویر و فایل‌های صوتی را برای ایجاد یک Composition ترکیب کنید.

صادرات یک ترکیب

برای اعمال تبدیل‌ها (مانند جلوه‌ها یا ویرایش‌های برش) در MediaItem ، باید یک EditedMediaItem ایجاد کنید تا دارایی را نشان دهد که تغییرات اعمال شده روی آن اعمال شده است.

سپس اشیاء EditedMediaItem را می توان به یکدیگر الحاق کرد تا یک EditedMediaItemSequence ایجاد شود. به عنوان مثال، می توانید یک EditedMediaItemSequence با دو ویدیوی ویرایش شده ایجاد کنید. موارد داخل یک EditedMediaItemSequence به ترتیب مرتب می شوند و در زمان با هم همپوشانی ندارند.

یک Composition ترکیبی از یک یا چند شیء EditedMediaItemSequence است. تمام اشیاء EditedMediaItemSequence در Composition با هم ترکیب شده اند و به شما امکان می دهند دارایی های ویدیویی و صوتی را با هم ترکیب کنید.

اشیاء Composition را می توان با استفاده از Transformer صادر کرد.

در اینجا نمونه ای از ایجاد و صادر کردن یک دارایی ویدیویی است که شامل دو کلیپ ویدیویی ویرایش شده است که با یک تراک صوتی همپوشانی شده است:

کاتلین

val transformer = ... // Set up Transformer instance

val video1 = EditedMediaItem.Builder(
  MediaItem.fromUri(video1Uri))
  .build()

val video2 = EditedMediaItem.Builder(
  MediaItem.fromUri(video2Uri))
  .build()

val videoSequence = EditedMediaItemSequence(
  video1, video2)

val backgroundAudio = EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build()

val backgroundAudioSequence = EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true) // Loop audio track through duration of videoSequence

val composition = Composition.Builder(
  videoSequence,
  backgroundAudioSequence)
  .build()

val filePath = ... // Provide file path to save Composition

transformer.start(composition, filePath)

جاوا

Transformer transformer = ... // Set up Transformer instance

EditedMediaItem video1 = new EditedMediaItem.Builder(
  MediaItem.fromUri(video1Uri))
  .build();

EditedMediaItem video2 = new EditedMediaItem.Builder(
  MediaItem.fromUri(video2Uri))
  .build();

EditedMediaItemSequence videoSequence = new EditedMediaItemSequence(
  video1, video2);

EditedMediaItem backgroundAudio = new EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build();

EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true); // Loop audio track through duration of videoSequence

String filePath = ... // Provide file path to save Composition

Composition composition = new Composition.Builder(
  videoSequence,
  backgroundAudioSequence)
  .build();

transformer.start(composition, filePath);

نمونه هایی از موارد استفاده پشتیبانی شده

این یک لیست غیر جامع از موارد استفاده است که Transformer API با Compositions پشتیبانی می کند:

  • ترکیب متوالی دارایی های صوتی، تصویری و ویدیویی. با این حال، همه موارد در یک دنباله باید دارای آهنگ های یکسان باشند. به عنوان مثال، شما نمی توانید دنباله ای داشته باشید که حاوی یک فایل فقط صوتی و به دنبال آن یک فایل ویدئویی باشد.
  • افزودن صدای پس‌زمینه به دارایی ویدیو.
  • افزودن افکت به یک ترکیب
  • نگاشت ورودی HDR به SDR برای تولید خروجی SDR با کیفیت بصری بهتر.

محدودیت های فعلی

دنباله‌های داخل یک ترکیب باید شرایطی را داشته باشند که در Transformer.start() آمده است. علاوه بر این، عملیات زیر هنوز هنگام کار با Composition ها پشتیبانی نمی شود:

  • شروع پخش EditedMediaItemSequence با افست.
  • تراک های ویدیویی یا صوتی متقاطع

درخواست های ویژگی

اگر درخواست ویژگی برای Transformer API دارید، مشکلی را در مخزن Media3 GitHub ثبت کنید.