feat(Spoof video streams): Add Android Reel client to fix playback issues (#6830)

Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: inotia00 <108592928+inotia00@users.noreply.github.com>
This commit is contained in:
oSumAtrIX 2026-03-18 15:00:26 +01:00 committed by GitHub
parent 14ea61355d
commit 4b6c3e3123
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 319 additions and 173 deletions

View file

@ -169,13 +169,13 @@ internal fun spoofVideoStreamsPatch(
if-eqz v2, :disabled
# Get streaming data.
invoke-static { v2 }, $EXTENSION_CLASS_DESCRIPTOR->getStreamingData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
invoke-static { v2 }, $EXTENSION_CLASS_DESCRIPTOR->getStreamingData(Ljava/lang/String;)[B
move-result-object v3
if-eqz v3, :disabled
# Parse streaming data.
sget-object v4, $playerProtoClass->a:$playerProtoClass
invoke-static { v4, v3 }, $protobufClass->parseFrom(${protobufClass}Ljava/nio/ByteBuffer;)$protobufClass
invoke-static { v4, v3 }, $protobufClass->parseFrom(${protobufClass}[B)$protobufClass
move-result-object v5
check-cast v5, $playerProtoClass

View file

@ -63,10 +63,10 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
// Requires a key and title but the actual text is chosen at runtime.
key = "revanced_spoof_video_streams_about",
summaryKey = null,
tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference",
tag = "app.revanced.extension.youtube.settings.preference.SpoofVideoStreamsSideEffectsPreference",
),
SwitchPreference("revanced_spoof_video_streams_av1"),
SwitchPreference("revanced_spoof_streaming_data_stats_for_nerds"),
SwitchPreference("revanced_spoof_video_streams_stats_for_nerds"),
),
),
)

View file

@ -220,14 +220,14 @@
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string-array name="revanced_spoof_video_streams_client_type_entries">
<item>Android Reel</item>
<item>Android VR</item>
<item>visionOS</item>
<item>Android No SDK</item>
</string-array>
<string-array name="revanced_spoof_video_streams_client_type_entry_values">
<item>ANDROID_REEL</item>
<item>ANDROID_VR_1_43_32</item>
<item>VISIONOS</item>
<item>ANDROID_NO_SDK</item>
</string-array>
</patch>
</app>
@ -264,18 +264,16 @@
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string-array name="revanced_spoof_video_streams_client_type_entries">
<item>Android Reel</item>
<item>Android VR</item>
<item>Android Studio</item>
<item>Android No SDK</item>
<item>visionOS</item>
<item>iPadOS</item>
</string-array>
<string-array name="revanced_spoof_video_streams_client_type_entry_values">
<item>ANDROID_REEL</item>
<item>ANDROID_VR_1_43_32</item>
<item>ANDROID_CREATOR</item>
<item>ANDROID_NO_SDK</item>
<item>VISIONOS</item>
<item>IPADOS</item>
</string-array>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
@ -663,8 +661,7 @@
<item>cross-out</item>
</string-array>
</patch>
<patch id="chat.autoclaim.autoClaimChannelPointsPatch">
</patch>
<patch id="chat.autoclaim.autoClaimChannelPointsPatch"></patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string-array name="revanced_block_embedded_ads_entries">
<item>@string/revanced_block_embedded_ads_entry_1</item>

View file

@ -144,6 +144,16 @@ If you are a YouTube Premium user, this setting may not be required"</string>
Playback may not work"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Turning off this setting may cause playback issues.</string>
<string name="revanced_spoof_video_streams_client_type_title">Default client</string>
<string name="revanced_spoof_video_streams_about_experimental">• Experimental client and may stop working anytime</string>
<string name="revanced_spoof_video_streams_about_playback_failure">• Video may stop at 1:00, or may not be available in some regions</string>
<string name="revanced_spoof_video_streams_about_no_audio_tracks">• Audio track menu is missing</string>
<string name="revanced_spoof_video_streams_about_no_av1">• No AV1 video codec</string>
<string name="revanced_spoof_video_streams_about_no_immersive_mode">• 360° VR immersive mode is not available</string>
<string name="revanced_spoof_video_streams_about_no_stable_volume">• Stable volume is not available</string>
<string name="revanced_spoof_video_streams_about_title">Spoofing side effects</string>
<!-- "Force original audio" should use the same text as revanced_force_original_audio_title -->
<string name="revanced_spoof_video_streams_about_no_force_original_audio">• Force original audio is not available</string>
</patch>
<patch id="misc.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Force original audio language</string>
@ -900,10 +910,10 @@ Adjust volume by swiping vertically on the right side of the screen"</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Audio track menu is hidden</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Audio track menu is shown</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
'Android Reel' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audio track menu is hidden
To show the Audio track menu, change \'Spoof video streams\' to \'Android No SDK\'"</string>
To show the Audio track menu, change \'Spoof video streams\' to \'Android >Reel\'"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Hide Watch in VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Watch in VR menu is hidden</string>
@ -1786,18 +1796,9 @@ Playback may stutter or drop frames"</string>
<string name="revanced_spoof_video_streams_av1_user_dialog_message">"Enabling this setting may use software AV1 decoding.
Video playback with AV1 may stutter or drop frames."</string>
<string name="revanced_spoof_video_streams_about_title">Spoofing side effects</string>
<string name="revanced_spoof_video_streams_about_experimental">• Experimental client and may stop working anytime</string>
<string name="revanced_spoof_video_streams_about_playback_failure">• Video may stop at 1:00, or may not be available in some regions</string>
<string name="revanced_spoof_video_streams_about_no_audio_tracks">• Audio track menu is missing</string>
<string name="revanced_spoof_video_streams_about_no_av1">• No AV1 video codec</string>
<string name="revanced_spoof_video_streams_about_no_stable_volume">• Stable volume is not available</string>
<string name="revanced_spoof_video_streams_about_kids_videos">• Kids videos may not play when logged out or in incognito mode</string>
<!-- "Force original audio" should use the same text as revanced_force_original_audio_title -->
<string name="revanced_spoof_video_streams_about_no_force_original_audio">• Force original audio is not available</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Show in Stats for nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Client type is shown in Stats for nerds</string>
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Client is hidden in Stats for nerds</string>
<string name="revanced_spoof_video_streams_stats_for_nerds_title">Show in Stats for nerds</string>
<string name="revanced_spoof_video_streams_stats_for_nerds_summary_on">Client type is shown in Stats for nerds</string>
<string name="revanced_spoof_video_streams_stats_for_nerds_summary_off">Client is hidden in Stats for nerds</string>
</patch>
</app>
<app id="music">