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:
parent
c14b250445
commit
991010f24c
@ -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);
|
||||||
|
@ -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))
|
||||||
|
@ -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" >
|
||||||
|
@ -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>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user