mirror of
https://github.com/iv-org/invidious.git
synced 2025-07-29 08:48:30 +00:00
Added support for 'preservesPitch'.
This commit is contained in:
parent
069e91d2a6
commit
4affef6eb0
@ -221,6 +221,9 @@ if (video_data.params.video_start > 0 || video_data.params.video_end > 0) {
|
|||||||
player.volume(video_data.params.volume / 100);
|
player.volume(video_data.params.volume / 100);
|
||||||
player.playbackRate(video_data.params.speed);
|
player.playbackRate(video_data.params.speed);
|
||||||
|
|
||||||
|
// Dirty hack to set a property in <video/> element that Video.js doesn't currently native support.
|
||||||
|
player.tech_.el_.preservesPitch = video_data.params.preserves_pitch;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method for getting the contents of a cookie
|
* Method for getting the contents of a cookie
|
||||||
*
|
*
|
||||||
|
@ -761,6 +761,14 @@ default_user_preferences:
|
|||||||
##
|
##
|
||||||
#video_loop: false
|
#video_loop: false
|
||||||
|
|
||||||
|
##
|
||||||
|
## Detether payback speed from pitch.
|
||||||
|
##
|
||||||
|
## Accepted values: true, false
|
||||||
|
## Default: true
|
||||||
|
##
|
||||||
|
#preserves_pitch: true
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
# Video playback settings
|
# Video playback settings
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"Preferences": "Einstellungen",
|
"Preferences": "Einstellungen",
|
||||||
"preferences_category_player": "Wiedergabeeinstellungen",
|
"preferences_category_player": "Wiedergabeeinstellungen",
|
||||||
"preferences_video_loop_label": "Immer wiederholen: ",
|
"preferences_video_loop_label": "Immer wiederholen: ",
|
||||||
|
"preferences_preserves_pitch_label": "Tonhöhe erhalten: ",
|
||||||
"preferences_autoplay_label": "Automatisch abspielen: ",
|
"preferences_autoplay_label": "Automatisch abspielen: ",
|
||||||
"preferences_continue_label": "Immer automatisch nächstes Video abspielen: ",
|
"preferences_continue_label": "Immer automatisch nächstes Video abspielen: ",
|
||||||
"preferences_continue_autoplay_label": "Nächstes Video automatisch abspielen: ",
|
"preferences_continue_autoplay_label": "Nächstes Video automatisch abspielen: ",
|
||||||
|
@ -65,6 +65,7 @@
|
|||||||
"Preferences": "Preferences",
|
"Preferences": "Preferences",
|
||||||
"preferences_category_player": "Player preferences",
|
"preferences_category_player": "Player preferences",
|
||||||
"preferences_video_loop_label": "Always loop: ",
|
"preferences_video_loop_label": "Always loop: ",
|
||||||
|
"preferences_preserves_pitch_label": "Preserve pitch: ",
|
||||||
"preferences_autoplay_label": "Autoplay: ",
|
"preferences_autoplay_label": "Autoplay: ",
|
||||||
"preferences_continue_label": "Play next by default: ",
|
"preferences_continue_label": "Play next by default: ",
|
||||||
"preferences_continue_autoplay_label": "Autoplay next video: ",
|
"preferences_continue_autoplay_label": "Autoplay next video: ",
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"Preferences": "Preferencias",
|
"Preferences": "Preferencias",
|
||||||
"preferences_category_player": "Preferencias del reproductor",
|
"preferences_category_player": "Preferencias del reproductor",
|
||||||
"preferences_video_loop_label": "Repetir siempre: ",
|
"preferences_video_loop_label": "Repetir siempre: ",
|
||||||
|
"preferences_preserves_pitch_label": "Preservar tono: ",
|
||||||
"preferences_autoplay_label": "Reproducción automática: ",
|
"preferences_autoplay_label": "Reproducción automática: ",
|
||||||
"preferences_continue_label": "Reproducir siguiente por defecto: ",
|
"preferences_continue_label": "Reproducir siguiente por defecto: ",
|
||||||
"preferences_continue_autoplay_label": "Reproducir automáticamente el video siguiente: ",
|
"preferences_continue_autoplay_label": "Reproducir automáticamente el video siguiente: ",
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"Preferences": "Preferências",
|
"Preferences": "Preferências",
|
||||||
"preferences_category_player": "Preferências do reprodutor",
|
"preferences_category_player": "Preferências do reprodutor",
|
||||||
"preferences_video_loop_label": "Repetir sempre: ",
|
"preferences_video_loop_label": "Repetir sempre: ",
|
||||||
|
"preferences_preserves_pitch_label": "Preservar tom: ",
|
||||||
"preferences_autoplay_label": "Reprodução automática: ",
|
"preferences_autoplay_label": "Reprodução automática: ",
|
||||||
"preferences_continue_label": "Sempre reproduzir próximo: ",
|
"preferences_continue_label": "Sempre reproduzir próximo: ",
|
||||||
"preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ",
|
"preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ",
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"Preferences": "Preferências",
|
"Preferences": "Preferências",
|
||||||
"preferences_category_player": "Preferências do reprodutor",
|
"preferences_category_player": "Preferências do reprodutor",
|
||||||
"preferences_video_loop_label": "Repetir sempre: ",
|
"preferences_video_loop_label": "Repetir sempre: ",
|
||||||
|
"preferences_preserves_pitch_label": "Preservar tom: ",
|
||||||
"preferences_autoplay_label": "Reprodução automática: ",
|
"preferences_autoplay_label": "Reprodução automática: ",
|
||||||
"preferences_continue_label": "Reproduzir sempre o próximo: ",
|
"preferences_continue_label": "Reproduzir sempre o próximo: ",
|
||||||
"preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ",
|
"preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ",
|
||||||
|
@ -224,6 +224,7 @@
|
|||||||
"preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ",
|
"preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ",
|
||||||
"preferences_autoplay_label": "Reprodução automática: ",
|
"preferences_autoplay_label": "Reprodução automática: ",
|
||||||
"preferences_video_loop_label": "Repetir sempre: ",
|
"preferences_video_loop_label": "Repetir sempre: ",
|
||||||
|
"preferences_preserves_pitch_label": "Preservar tom: ",
|
||||||
"preferences_category_player": "Preferências do reprodutor",
|
"preferences_category_player": "Preferências do reprodutor",
|
||||||
"Preferences": "Preferências",
|
"Preferences": "Preferências",
|
||||||
"E-mail": "E-mail",
|
"E-mail": "E-mail",
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"Preferences": "Настройки",
|
"Preferences": "Настройки",
|
||||||
"preferences_category_player": "Настройки проигрывателя",
|
"preferences_category_player": "Настройки проигрывателя",
|
||||||
"preferences_video_loop_label": "Всегда повторять: ",
|
"preferences_video_loop_label": "Всегда повторять: ",
|
||||||
|
"preferences_preserves_pitch_label": "Сохранять тональность: ",
|
||||||
"preferences_autoplay_label": "Автовоспроизведение: ",
|
"preferences_autoplay_label": "Автовоспроизведение: ",
|
||||||
"preferences_continue_label": "Переходить к следующему видео? ",
|
"preferences_continue_label": "Переходить к следующему видео? ",
|
||||||
"preferences_continue_autoplay_label": "Автопроигрывание следующего видео: ",
|
"preferences_continue_autoplay_label": "Автопроигрывание следующего видео: ",
|
||||||
|
@ -39,6 +39,7 @@ struct ConfigPreferences
|
|||||||
property thin_mode : Bool = false
|
property thin_mode : Bool = false
|
||||||
property unseen_only : Bool = false
|
property unseen_only : Bool = false
|
||||||
property video_loop : Bool = false
|
property video_loop : Bool = false
|
||||||
|
property preserves_pitch : Bool = true
|
||||||
property extend_desc : Bool = false
|
property extend_desc : Bool = false
|
||||||
property volume : Int32 = 100
|
property volume : Int32 = 100
|
||||||
property vr_mode : Bool = true
|
property vr_mode : Bool = true
|
||||||
|
@ -19,6 +19,10 @@ module Invidious::Routes::PreferencesRoute
|
|||||||
video_loop ||= "off"
|
video_loop ||= "off"
|
||||||
video_loop = video_loop == "on"
|
video_loop = video_loop == "on"
|
||||||
|
|
||||||
|
preserves_pitch = env.params.body["preserves_pitch"]?.try &.as(String)
|
||||||
|
preserves_pitch ||= "off"
|
||||||
|
preserves_pitch = preserves_pitch == "on"
|
||||||
|
|
||||||
annotations = env.params.body["annotations"]?.try &.as(String)
|
annotations = env.params.body["annotations"]?.try &.as(String)
|
||||||
annotations ||= "off"
|
annotations ||= "off"
|
||||||
annotations = annotations == "on"
|
annotations = annotations == "on"
|
||||||
@ -170,6 +174,7 @@ module Invidious::Routes::PreferencesRoute
|
|||||||
thin_mode: thin_mode,
|
thin_mode: thin_mode,
|
||||||
unseen_only: unseen_only,
|
unseen_only: unseen_only,
|
||||||
video_loop: video_loop,
|
video_loop: video_loop,
|
||||||
|
preserves_pitch: preserves_pitch,
|
||||||
volume: volume,
|
volume: volume,
|
||||||
extend_desc: extend_desc,
|
extend_desc: extend_desc,
|
||||||
vr_mode: vr_mode,
|
vr_mode: vr_mode,
|
||||||
|
@ -52,6 +52,7 @@ struct Preferences
|
|||||||
property thin_mode : Bool = CONFIG.default_user_preferences.thin_mode
|
property thin_mode : Bool = CONFIG.default_user_preferences.thin_mode
|
||||||
property unseen_only : Bool = CONFIG.default_user_preferences.unseen_only
|
property unseen_only : Bool = CONFIG.default_user_preferences.unseen_only
|
||||||
property video_loop : Bool = CONFIG.default_user_preferences.video_loop
|
property video_loop : Bool = CONFIG.default_user_preferences.video_loop
|
||||||
|
property preserves_pitch : Bool = CONFIG.default_user_preferences.preserves_pitch
|
||||||
property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc
|
property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc
|
||||||
property volume : Int32 = CONFIG.default_user_preferences.volume
|
property volume : Int32 = CONFIG.default_user_preferences.volume
|
||||||
property save_player_pos : Bool = CONFIG.default_user_preferences.save_player_pos
|
property save_player_pos : Bool = CONFIG.default_user_preferences.save_player_pos
|
||||||
|
@ -19,6 +19,7 @@ struct VideoPreferences
|
|||||||
property speed : Float32 | Float64
|
property speed : Float32 | Float64
|
||||||
property video_end : Float64 | Int32
|
property video_end : Float64 | Int32
|
||||||
property video_loop : Bool
|
property video_loop : Bool
|
||||||
|
property preserves_pitch : Bool
|
||||||
property extend_desc : Bool
|
property extend_desc : Bool
|
||||||
property video_start : Float64 | Int32
|
property video_start : Float64 | Int32
|
||||||
property volume : Int32
|
property volume : Int32
|
||||||
@ -42,6 +43,7 @@ def process_video_params(query, preferences)
|
|||||||
related_videos = query["related_videos"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
related_videos = query["related_videos"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
||||||
speed = query["speed"]?.try &.rchop("x").to_f?
|
speed = query["speed"]?.try &.rchop("x").to_f?
|
||||||
video_loop = query["loop"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
video_loop = query["loop"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
||||||
|
preserves_pitch = query["preserves_pitch"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
||||||
extend_desc = query["extend_desc"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
extend_desc = query["extend_desc"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
||||||
volume = query["volume"]?.try &.to_i?
|
volume = query["volume"]?.try &.to_i?
|
||||||
vr_mode = query["vr_mode"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
vr_mode = query["vr_mode"]?.try { |q| (q == "true" || q == "1").to_unsafe }
|
||||||
@ -63,6 +65,7 @@ def process_video_params(query, preferences)
|
|||||||
related_videos ||= preferences.related_videos.to_unsafe
|
related_videos ||= preferences.related_videos.to_unsafe
|
||||||
speed ||= preferences.speed
|
speed ||= preferences.speed
|
||||||
video_loop ||= preferences.video_loop.to_unsafe
|
video_loop ||= preferences.video_loop.to_unsafe
|
||||||
|
preserves_pitch ||= preferences.preserves_pitch.to_unsafe
|
||||||
extend_desc ||= preferences.extend_desc.to_unsafe
|
extend_desc ||= preferences.extend_desc.to_unsafe
|
||||||
volume ||= preferences.volume
|
volume ||= preferences.volume
|
||||||
vr_mode ||= preferences.vr_mode.to_unsafe
|
vr_mode ||= preferences.vr_mode.to_unsafe
|
||||||
@ -83,6 +86,7 @@ def process_video_params(query, preferences)
|
|||||||
related_videos ||= CONFIG.default_user_preferences.related_videos.to_unsafe
|
related_videos ||= CONFIG.default_user_preferences.related_videos.to_unsafe
|
||||||
speed ||= CONFIG.default_user_preferences.speed
|
speed ||= CONFIG.default_user_preferences.speed
|
||||||
video_loop ||= CONFIG.default_user_preferences.video_loop.to_unsafe
|
video_loop ||= CONFIG.default_user_preferences.video_loop.to_unsafe
|
||||||
|
preserves_pitch ||= CONFIG.default_user_preferences.preserves_pitch.to_unsafe
|
||||||
extend_desc ||= CONFIG.default_user_preferences.extend_desc.to_unsafe
|
extend_desc ||= CONFIG.default_user_preferences.extend_desc.to_unsafe
|
||||||
volume ||= CONFIG.default_user_preferences.volume
|
volume ||= CONFIG.default_user_preferences.volume
|
||||||
vr_mode ||= CONFIG.default_user_preferences.vr_mode.to_unsafe
|
vr_mode ||= CONFIG.default_user_preferences.vr_mode.to_unsafe
|
||||||
@ -96,6 +100,7 @@ def process_video_params(query, preferences)
|
|||||||
local = local == 1
|
local = local == 1
|
||||||
related_videos = related_videos == 1
|
related_videos = related_videos == 1
|
||||||
video_loop = video_loop == 1
|
video_loop = video_loop == 1
|
||||||
|
preserves_pitch = preserves_pitch == 1
|
||||||
extend_desc = extend_desc == 1
|
extend_desc = extend_desc == 1
|
||||||
vr_mode = vr_mode == 1
|
vr_mode = vr_mode == 1
|
||||||
save_player_pos = save_player_pos == 1
|
save_player_pos = save_player_pos == 1
|
||||||
@ -145,6 +150,7 @@ def process_video_params(query, preferences)
|
|||||||
speed: speed,
|
speed: speed,
|
||||||
video_end: video_end,
|
video_end: video_end,
|
||||||
video_loop: video_loop,
|
video_loop: video_loop,
|
||||||
|
preserves_pitch: preserves_pitch,
|
||||||
extend_desc: extend_desc,
|
extend_desc: extend_desc,
|
||||||
video_start: video_start,
|
video_start: video_start,
|
||||||
volume: volume,
|
volume: volume,
|
||||||
|
@ -12,6 +12,11 @@
|
|||||||
<input name="video_loop" id="video_loop" type="checkbox" <% if preferences.video_loop %>checked<% end %>>
|
<input name="video_loop" id="video_loop" type="checkbox" <% if preferences.video_loop %>checked<% end %>>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="pure-control-group">
|
||||||
|
<label for="preserves_pitch"><%= translate(locale, "preferences_preserves_pitch_label") %></label>
|
||||||
|
<input name="preserves_pitch" id="preserves_pitch" type="checkbox" <% if preferences.preserves_pitch %>checked<% end %>>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="pure-control-group">
|
<div class="pure-control-group">
|
||||||
<label for="autoplay"><%= translate(locale, "preferences_autoplay_label") %></label>
|
<label for="autoplay"><%= translate(locale, "preferences_autoplay_label") %></label>
|
||||||
<input name="autoplay" id="autoplay" type="checkbox" <% if preferences.autoplay %>checked<% end %>>
|
<input name="autoplay" id="autoplay" type="checkbox" <% if preferences.autoplay %>checked<% end %>>
|
||||||
|
Loading…
Reference in New Issue
Block a user