Add force silent audio to the transformer demo application.

Adds a modified version of sample.mp4 to the list, which has no audio.

PiperOrigin-RevId: 492993918
This commit is contained in:
samrobinson 2022-12-05 14:50:03 +00:00 committed by Ian Baker
parent c14b250445
commit 991010f24c
4 changed files with 29 additions and 5 deletions

View File

@ -59,6 +59,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
public static final String SHOULD_REMOVE_AUDIO = "should_remove_audio"; public static final String SHOULD_REMOVE_AUDIO = "should_remove_audio";
public static final String SHOULD_REMOVE_VIDEO = "should_remove_video"; public static final String SHOULD_REMOVE_VIDEO = "should_remove_video";
public static final String SHOULD_FLATTEN_FOR_SLOW_MOTION = "should_flatten_for_slow_motion"; public static final String SHOULD_FLATTEN_FOR_SLOW_MOTION = "should_flatten_for_slow_motion";
public static final String FORCE_SILENT_AUDIO = "force_silent_audio";
public static final String AUDIO_MIME_TYPE = "audio_mime_type"; public static final String AUDIO_MIME_TYPE = "audio_mime_type";
public static final String VIDEO_MIME_TYPE = "video_mime_type"; public static final String VIDEO_MIME_TYPE = "video_mime_type";
public static final String RESOLUTION_HEIGHT = "resolution_height"; public static final String RESOLUTION_HEIGHT = "resolution_height";
@ -103,6 +104,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"https://storage.googleapis.com/exoplayer-test-media-1/gen/screens/dash-vod-single-segment/manifest-baseline.mpd", "https://storage.googleapis.com/exoplayer-test-media-1/gen/screens/dash-vod-single-segment/manifest-baseline.mpd",
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/samsung-s21-hdr-hdr10.mp4", "https://storage.googleapis.com/exoplayer-test-media-1/mp4/samsung-s21-hdr-hdr10.mp4",
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/Pixel7Pro_HLG_1080P.mp4", "https://storage.googleapis.com/exoplayer-test-media-1/mp4/Pixel7Pro_HLG_1080P.mp4",
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/sample_video_track_only.mp4",
}; };
private static final String[] PRESET_FILE_URI_DESCRIPTIONS = { // same order as PRESET_FILE_URIS private static final String[] PRESET_FILE_URI_DESCRIPTIONS = { // same order as PRESET_FILE_URIS
"720p H264 video and AAC audio", "720p H264 video and AAC audio",
@ -119,6 +121,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"480p DASH (non-square pixels)", "480p DASH (non-square pixels)",
"HDR (HDR10) H265 limited range video (encoding may fail)", "HDR (HDR10) H265 limited range video (encoding may fail)",
"HDR (HLG) H265 limited range video (encoding may fail)", "HDR (HLG) H265 limited range video (encoding may fail)",
"720p H264 video with no audio",
}; };
private static final String[] DEMO_EFFECTS = { private static final String[] DEMO_EFFECTS = {
"Dizzy crop", "Dizzy crop",
@ -157,6 +160,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
private @MonotonicNonNull CheckBox removeAudioCheckbox; private @MonotonicNonNull CheckBox removeAudioCheckbox;
private @MonotonicNonNull CheckBox removeVideoCheckbox; private @MonotonicNonNull CheckBox removeVideoCheckbox;
private @MonotonicNonNull CheckBox flattenForSlowMotionCheckbox; private @MonotonicNonNull CheckBox flattenForSlowMotionCheckbox;
private @MonotonicNonNull CheckBox forceSilentAudioCheckbox;
private @MonotonicNonNull Spinner audioMimeSpinner; private @MonotonicNonNull Spinner audioMimeSpinner;
private @MonotonicNonNull Spinner videoMimeSpinner; private @MonotonicNonNull Spinner videoMimeSpinner;
private @MonotonicNonNull Spinner resolutionHeightSpinner; private @MonotonicNonNull Spinner resolutionHeightSpinner;
@ -193,7 +197,11 @@ public final class ConfigurationActivity extends AppCompatActivity {
findViewById(R.id.transform_button).setOnClickListener(this::startTransformation); findViewById(R.id.transform_button).setOnClickListener(this::startTransformation);
flattenForSlowMotionCheckbox = findViewById(R.id.flatten_for_slow_motion_checkbox); selectPresetFileButton = findViewById(R.id.select_preset_file_button);
selectPresetFileButton.setOnClickListener(this::selectPresetFile);
selectLocalFileButton = findViewById(R.id.select_local_file_button);
selectLocalFileButton.setOnClickListener(this::selectLocalFile);
selectedFileTextView = findViewById(R.id.selected_file_text_view); selectedFileTextView = findViewById(R.id.selected_file_text_view);
selectedFileTextView.setText(PRESET_FILE_URI_DESCRIPTIONS[inputUriPosition]); selectedFileTextView.setText(PRESET_FILE_URI_DESCRIPTIONS[inputUriPosition]);
@ -204,11 +212,9 @@ public final class ConfigurationActivity extends AppCompatActivity {
removeVideoCheckbox = findViewById(R.id.remove_video_checkbox); removeVideoCheckbox = findViewById(R.id.remove_video_checkbox);
removeVideoCheckbox.setOnClickListener(this::onRemoveVideo); removeVideoCheckbox.setOnClickListener(this::onRemoveVideo);
selectPresetFileButton = findViewById(R.id.select_preset_file_button); flattenForSlowMotionCheckbox = findViewById(R.id.flatten_for_slow_motion_checkbox);
selectPresetFileButton.setOnClickListener(this::selectPresetFile);
selectLocalFileButton = findViewById(R.id.select_local_file_button); forceSilentAudioCheckbox = findViewById(R.id.force_silent_audio_checkbox);
selectLocalFileButton.setOnClickListener(this::selectLocalFile);
ArrayAdapter<String> audioMimeAdapter = ArrayAdapter<String> audioMimeAdapter =
new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item); new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item);
@ -315,6 +321,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"removeAudioCheckbox", "removeAudioCheckbox",
"removeVideoCheckbox", "removeVideoCheckbox",
"flattenForSlowMotionCheckbox", "flattenForSlowMotionCheckbox",
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
@ -333,6 +340,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
bundle.putBoolean(SHOULD_REMOVE_AUDIO, removeAudioCheckbox.isChecked()); bundle.putBoolean(SHOULD_REMOVE_AUDIO, removeAudioCheckbox.isChecked());
bundle.putBoolean(SHOULD_REMOVE_VIDEO, removeVideoCheckbox.isChecked()); bundle.putBoolean(SHOULD_REMOVE_VIDEO, removeVideoCheckbox.isChecked());
bundle.putBoolean(SHOULD_FLATTEN_FOR_SLOW_MOTION, flattenForSlowMotionCheckbox.isChecked()); bundle.putBoolean(SHOULD_FLATTEN_FOR_SLOW_MOTION, flattenForSlowMotionCheckbox.isChecked());
bundle.putBoolean(FORCE_SILENT_AUDIO, forceSilentAudioCheckbox.isChecked());
String selectedAudioMimeType = String.valueOf(audioMimeSpinner.getSelectedItem()); String selectedAudioMimeType = String.valueOf(audioMimeSpinner.getSelectedItem());
if (!SAME_AS_INPUT_OPTION.equals(selectedAudioMimeType)) { if (!SAME_AS_INPUT_OPTION.equals(selectedAudioMimeType)) {
bundle.putString(AUDIO_MIME_TYPE, selectedAudioMimeType); bundle.putString(AUDIO_MIME_TYPE, selectedAudioMimeType);
@ -596,6 +604,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
@RequiresNonNull({ @RequiresNonNull({
"removeVideoCheckbox", "removeVideoCheckbox",
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
@ -616,6 +625,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
@RequiresNonNull({ @RequiresNonNull({
"removeAudioCheckbox", "removeAudioCheckbox",
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
@ -635,6 +645,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
} }
@RequiresNonNull({ @RequiresNonNull({
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
@ -645,6 +656,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"selectDemoEffectsButton" "selectDemoEffectsButton"
}) })
private void enableTrackSpecificOptions(boolean isAudioEnabled, boolean isVideoEnabled) { private void enableTrackSpecificOptions(boolean isAudioEnabled, boolean isVideoEnabled) {
forceSilentAudioCheckbox.setEnabled(isVideoEnabled);
audioMimeSpinner.setEnabled(isAudioEnabled); audioMimeSpinner.setEnabled(isAudioEnabled);
videoMimeSpinner.setEnabled(isVideoEnabled); videoMimeSpinner.setEnabled(isVideoEnabled);
resolutionHeightSpinner.setEnabled(isVideoEnabled); resolutionHeightSpinner.setEnabled(isVideoEnabled);

View File

@ -276,6 +276,8 @@ public final class TransformerActivity extends AppCompatActivity {
.setTransformationRequest(requestBuilder.build()) .setTransformationRequest(requestBuilder.build())
.setRemoveAudio(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_AUDIO)) .setRemoveAudio(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_AUDIO))
.setRemoveVideo(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_VIDEO)) .setRemoveVideo(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_VIDEO))
.experimentalSetForceSilentAudio(
bundle.getBoolean(ConfigurationActivity.FORCE_SILENT_AUDIO))
.setEncoderFactory( .setEncoderFactory(
new DefaultEncoderFactory.Builder(this.getApplicationContext()) new DefaultEncoderFactory.Builder(this.getApplicationContext())
.setEnableFallback(bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK)) .setEnableFallback(bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK))

View File

@ -112,6 +112,15 @@
android:id="@+id/flatten_for_slow_motion_checkbox" android:id="@+id/flatten_for_slow_motion_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/force_silent_audio" />
<CheckBox
android:id="@+id/force_silent_audio_checkbox"
android:layout_gravity="end" />
</TableRow>
<TableRow <TableRow
android:layout_weight="1" android:layout_weight="1"
android:gravity="center_vertical" > android:gravity="center_vertical" >

View File

@ -65,4 +65,5 @@
<string name="permission_denied">Permission Denied</string> <string name="permission_denied">Permission Denied</string>
<string name="hide_input_video">Hide input video</string> <string name="hide_input_video">Hide input video</string>
<string name="show_input_video">Show input video</string> <string name="show_input_video">Show input video</string>
<string name="force_silent_audio">Force silent audio</string>
</resources> </resources>