Allow creating fragmented MP4 file via demo app
PiperOrigin-RevId: 594435072
This commit is contained in:
parent
27ae6d974e
commit
846ace16aa
@ -78,6 +78,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||||||
public static final String ENABLE_FALLBACK = "enable_fallback";
|
public static final String ENABLE_FALLBACK = "enable_fallback";
|
||||||
public static final String ENABLE_DEBUG_PREVIEW = "enable_debug_preview";
|
public static final String ENABLE_DEBUG_PREVIEW = "enable_debug_preview";
|
||||||
public static final String ABORT_SLOW_EXPORT = "abort_slow_export";
|
public static final String ABORT_SLOW_EXPORT = "abort_slow_export";
|
||||||
|
public static final String PRODUCE_FRAGMENTED_MP4 = "produce_fragmented_mp4";
|
||||||
public static final String HDR_MODE = "hdr_mode";
|
public static final String HDR_MODE = "hdr_mode";
|
||||||
public static final String AUDIO_EFFECTS_SELECTIONS = "audio_effects_selections";
|
public static final String AUDIO_EFFECTS_SELECTIONS = "audio_effects_selections";
|
||||||
public static final String VIDEO_EFFECTS_SELECTIONS = "video_effects_selections";
|
public static final String VIDEO_EFFECTS_SELECTIONS = "video_effects_selections";
|
||||||
@ -230,6 +231,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||||||
private @MonotonicNonNull CheckBox enableFallbackCheckBox;
|
private @MonotonicNonNull CheckBox enableFallbackCheckBox;
|
||||||
private @MonotonicNonNull CheckBox enableDebugPreviewCheckBox;
|
private @MonotonicNonNull CheckBox enableDebugPreviewCheckBox;
|
||||||
private @MonotonicNonNull CheckBox abortSlowExportCheckBox;
|
private @MonotonicNonNull CheckBox abortSlowExportCheckBox;
|
||||||
|
private @MonotonicNonNull CheckBox produceFragmentedMp4CheckBox;
|
||||||
private @MonotonicNonNull Spinner hdrModeSpinner;
|
private @MonotonicNonNull Spinner hdrModeSpinner;
|
||||||
private @MonotonicNonNull Button selectAudioEffectsButton;
|
private @MonotonicNonNull Button selectAudioEffectsButton;
|
||||||
private @MonotonicNonNull Button selectVideoEffectsButton;
|
private @MonotonicNonNull Button selectVideoEffectsButton;
|
||||||
@ -345,6 +347,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||||||
enableDebugPreviewCheckBox = findViewById(R.id.enable_debug_preview_checkbox);
|
enableDebugPreviewCheckBox = findViewById(R.id.enable_debug_preview_checkbox);
|
||||||
|
|
||||||
abortSlowExportCheckBox = findViewById(R.id.abort_slow_export_checkbox);
|
abortSlowExportCheckBox = findViewById(R.id.abort_slow_export_checkbox);
|
||||||
|
produceFragmentedMp4CheckBox = findViewById(R.id.produce_fragmented_mp4_checkbox);
|
||||||
|
|
||||||
ArrayAdapter<String> hdrModeAdapter =
|
ArrayAdapter<String> hdrModeAdapter =
|
||||||
new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item);
|
new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item);
|
||||||
@ -409,6 +412,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||||||
"enableFallbackCheckBox",
|
"enableFallbackCheckBox",
|
||||||
"enableDebugPreviewCheckBox",
|
"enableDebugPreviewCheckBox",
|
||||||
"abortSlowExportCheckBox",
|
"abortSlowExportCheckBox",
|
||||||
|
"produceFragmentedMp4CheckBox",
|
||||||
"hdrModeSpinner",
|
"hdrModeSpinner",
|
||||||
"audioEffectsSelections",
|
"audioEffectsSelections",
|
||||||
"videoEffectsSelections"
|
"videoEffectsSelections"
|
||||||
@ -450,6 +454,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||||||
bundle.putBoolean(ENABLE_FALLBACK, enableFallbackCheckBox.isChecked());
|
bundle.putBoolean(ENABLE_FALLBACK, enableFallbackCheckBox.isChecked());
|
||||||
bundle.putBoolean(ENABLE_DEBUG_PREVIEW, enableDebugPreviewCheckBox.isChecked());
|
bundle.putBoolean(ENABLE_DEBUG_PREVIEW, enableDebugPreviewCheckBox.isChecked());
|
||||||
bundle.putBoolean(ABORT_SLOW_EXPORT, abortSlowExportCheckBox.isChecked());
|
bundle.putBoolean(ABORT_SLOW_EXPORT, abortSlowExportCheckBox.isChecked());
|
||||||
|
bundle.putBoolean(PRODUCE_FRAGMENTED_MP4, produceFragmentedMp4CheckBox.isChecked());
|
||||||
String selectedhdrMode = String.valueOf(hdrModeSpinner.getSelectedItem());
|
String selectedhdrMode = String.valueOf(hdrModeSpinner.getSelectedItem());
|
||||||
bundle.putInt(HDR_MODE, checkNotNull(HDR_MODE_DESCRIPTIONS.get(selectedhdrMode)));
|
bundle.putInt(HDR_MODE, checkNotNull(HDR_MODE_DESCRIPTIONS.get(selectedhdrMode)));
|
||||||
bundle.putBooleanArray(AUDIO_EFFECTS_SELECTIONS, audioEffectsSelections);
|
bundle.putBooleanArray(AUDIO_EFFECTS_SELECTIONS, audioEffectsSelections);
|
||||||
|
@ -87,6 +87,8 @@ import androidx.media3.transformer.EditedMediaItemSequence;
|
|||||||
import androidx.media3.transformer.Effects;
|
import androidx.media3.transformer.Effects;
|
||||||
import androidx.media3.transformer.ExportException;
|
import androidx.media3.transformer.ExportException;
|
||||||
import androidx.media3.transformer.ExportResult;
|
import androidx.media3.transformer.ExportResult;
|
||||||
|
import androidx.media3.transformer.InAppMuxer;
|
||||||
|
import androidx.media3.transformer.Muxer;
|
||||||
import androidx.media3.transformer.ProgressHolder;
|
import androidx.media3.transformer.ProgressHolder;
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.ui.AspectRatioFrameLayout;
|
import androidx.media3.ui.AspectRatioFrameLayout;
|
||||||
@ -320,11 +322,21 @@ public final class TransformerActivity extends AppCompatActivity {
|
|||||||
.setEnableFallback(bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK))
|
.setEnableFallback(bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK))
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
|
long maxDelayBetweenSamplesMs = DefaultMuxer.Factory.DEFAULT_MAX_DELAY_BETWEEN_SAMPLES_MS;
|
||||||
if (!bundle.getBoolean(ConfigurationActivity.ABORT_SLOW_EXPORT)) {
|
if (!bundle.getBoolean(ConfigurationActivity.ABORT_SLOW_EXPORT)) {
|
||||||
transformerBuilder.setMuxerFactory(
|
maxDelayBetweenSamplesMs = C.TIME_UNSET;
|
||||||
new DefaultMuxer.Factory(/* maxDelayBetweenSamplesMs= */ C.TIME_UNSET));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Muxer.Factory muxerFactory = new DefaultMuxer.Factory(maxDelayBetweenSamplesMs);
|
||||||
|
if (bundle.getBoolean(ConfigurationActivity.PRODUCE_FRAGMENTED_MP4)) {
|
||||||
|
muxerFactory =
|
||||||
|
new InAppMuxer.Factory.Builder()
|
||||||
|
.setMaxDelayBetweenSamplesMs(maxDelayBetweenSamplesMs)
|
||||||
|
.setFragmentedMp4Enabled(true)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
transformerBuilder.setMuxerFactory(muxerFactory);
|
||||||
|
|
||||||
if (bundle.getBoolean(ConfigurationActivity.ENABLE_DEBUG_PREVIEW)) {
|
if (bundle.getBoolean(ConfigurationActivity.ENABLE_DEBUG_PREVIEW)) {
|
||||||
transformerBuilder.setDebugViewProvider(new DemoDebugViewProvider());
|
transformerBuilder.setDebugViewProvider(new DemoDebugViewProvider());
|
||||||
}
|
}
|
||||||
|
@ -215,6 +215,15 @@
|
|||||||
android:id="@+id/abort_slow_export_checkbox"
|
android:id="@+id/abort_slow_export_checkbox"
|
||||||
android:layout_gravity="end"/>
|
android:layout_gravity="end"/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
<TableRow
|
||||||
|
android:layout_weight="1">
|
||||||
|
<TextView
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/produce_fragmented_mp4" />
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/produce_fragmented_mp4_checkbox"
|
||||||
|
android:layout_gravity="end"/>
|
||||||
|
</TableRow>
|
||||||
<TableRow
|
<TableRow
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center_vertical" >
|
android:gravity="center_vertical" >
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
<string name="enable_fallback" translatable="false">Enable fallback</string>
|
<string name="enable_fallback" translatable="false">Enable fallback</string>
|
||||||
<string name="enable_debug_preview" translatable="false">Enable debug preview</string>
|
<string name="enable_debug_preview" translatable="false">Enable debug preview</string>
|
||||||
<string name="abort_slow_export" translatable="false">Abort slow export</string>
|
<string name="abort_slow_export" translatable="false">Abort slow export</string>
|
||||||
|
<string name="produce_fragmented_mp4" translatable="false">Produce fragmented MP4</string>
|
||||||
<string name="trim" translatable="false">Trim</string>
|
<string name="trim" translatable="false">Trim</string>
|
||||||
<string name="hdr_mode" translatable="false">HDR mode</string>
|
<string name="hdr_mode" translatable="false">HDR mode</string>
|
||||||
<string name="select_audio_effects" translatable="false">Add audio effects</string>
|
<string name="select_audio_effects" translatable="false">Add audio effects</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user