mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Composition demo: use isLooping for background audio
By using this setter, the duration of the background audio doesn't need to be computed anymore. It will also repeat the audio track if the video track is longer. PiperOrigin-RevId: 737621668
This commit is contained in:
parent
343a7b054e
commit
ce7bf8f76c
@ -221,9 +221,6 @@ public final class CompositionPreviewActivity extends AppCompatActivity {
|
||||
videoEffectsBuilder.add(Presentation.createForHeight(resolutionHeight));
|
||||
}
|
||||
ImmutableList<Effect> videoEffects = videoEffectsBuilder.build();
|
||||
// Preview requires all sequences to be the same duration, so calculate main sequence duration
|
||||
// and limit background sequence duration to match.
|
||||
long videoSequenceDurationUs = 0;
|
||||
for (int i = 0; i < selectedMediaItems.length; i++) {
|
||||
if (selectedMediaItems[i]) {
|
||||
SonicAudioProcessor pitchChanger = new SonicAudioProcessor();
|
||||
@ -240,7 +237,6 @@ public final class CompositionPreviewActivity extends AppCompatActivity {
|
||||
/* audioProcessors= */ ImmutableList.of(pitchChanger),
|
||||
/* videoEffects= */ videoEffects))
|
||||
.setDurationUs(presetDurationsUs[i]);
|
||||
videoSequenceDurationUs += presetDurationsUs[i];
|
||||
mediaItems.add(itemBuilder.build());
|
||||
}
|
||||
}
|
||||
@ -248,7 +244,7 @@ public final class CompositionPreviewActivity extends AppCompatActivity {
|
||||
List<EditedMediaItemSequence> compositionSequences = new ArrayList<>();
|
||||
compositionSequences.add(videoSequence);
|
||||
if (includeBackgroundAudioTrack) {
|
||||
compositionSequences.add(getAudioBackgroundSequence(Util.usToMs(videoSequenceDurationUs)));
|
||||
compositionSequences.add(getAudioBackgroundSequence());
|
||||
}
|
||||
SonicAudioProcessor sampleRateChanger = new SonicAudioProcessor();
|
||||
sampleRateChanger.setOutputSampleRateHz(8_000);
|
||||
@ -264,19 +260,11 @@ public final class CompositionPreviewActivity extends AppCompatActivity {
|
||||
.build();
|
||||
}
|
||||
|
||||
private EditedMediaItemSequence getAudioBackgroundSequence(long durationMs) {
|
||||
MediaItem audioMediaItem =
|
||||
new MediaItem.Builder()
|
||||
.setUri(AUDIO_URI)
|
||||
.setClippingConfiguration(
|
||||
new MediaItem.ClippingConfiguration.Builder()
|
||||
.setStartPositionMs(0)
|
||||
.setEndPositionMs(durationMs)
|
||||
.build())
|
||||
.build();
|
||||
private static EditedMediaItemSequence getAudioBackgroundSequence() {
|
||||
MediaItem audioMediaItem = new MediaItem.Builder().setUri(AUDIO_URI).build();
|
||||
EditedMediaItem audioItem =
|
||||
new EditedMediaItem.Builder(audioMediaItem).setDurationUs(59_000_000).build();
|
||||
return new EditedMediaItemSequence.Builder(audioItem).build();
|
||||
return new EditedMediaItemSequence.Builder(audioItem).setIsLooping(true).build();
|
||||
}
|
||||
|
||||
private void previewComposition() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user