diff --git a/pikaraoke/app.py b/pikaraoke/app.py index 9856c289..64056475 100644 --- a/pikaraoke/app.py +++ b/pikaraoke/app.py @@ -111,6 +111,7 @@ def home(): title="Home", transpose_value=k.now_playing_transpose, admin=is_admin(), + is_transpose_enabled=k.is_transpose_enabled, ) @@ -164,6 +165,7 @@ def nowplaying(): "is_paused": k.is_paused, "transpose_value": k.now_playing_transpose, "volume": k.volume, + # "is_transpose_enabled": k.is_transpose_enabled, } rc["hash"] = hash_dict(rc) # used to detect changes in the now playing data return json.dumps(rc) @@ -582,6 +584,7 @@ def info(): cpu=cpu, disk=disk, ffmpeg_version=k.ffmpeg_version, + is_transpose_enabled=k.is_transpose_enabled, youtubedl_version=youtubedl_version, platform=k.platform, os_version=k.os_version, diff --git a/pikaraoke/karaoke.py b/pikaraoke/karaoke.py index d21ff798..d1a1e95d 100644 --- a/pikaraoke/karaoke.py +++ b/pikaraoke/karaoke.py @@ -22,6 +22,7 @@ get_os_version, get_platform, is_raspberry_pi, + is_transpose_enabled, supports_hardware_h264_encoding, ) @@ -66,6 +67,7 @@ class Karaoke: ffmpeg_process = None ffmpeg_log = None ffmpeg_version = get_ffmpeg_version() + is_transpose_enabled = is_transpose_enabled() supports_hardware_h264_encoding = supports_hardware_h264_encoding() normalize_audio = False @@ -144,6 +146,7 @@ def __init__( platform: {self.platform} os version: {self.os_version} ffmpeg version: {self.ffmpeg_version} + ffmpeg transpose support: {self.is_transpose_enabled} hardware h264 encoding: {self.supports_hardware_h264_encoding} youtubedl-version: {self.get_youtubedl_version()} """ diff --git a/pikaraoke/lib/get_platform.py b/pikaraoke/lib/get_platform.py index 219f9f1c..d7057314 100644 --- a/pikaraoke/lib/get_platform.py +++ b/pikaraoke/lib/get_platform.py @@ -21,6 +21,18 @@ def get_ffmpeg_version(): return "Unable to parse FFmpeg version" +def is_transpose_enabled(): + try: + filters = subprocess.run(["ffmpeg", "-filters"], capture_output=True) + except FileNotFoundError: + # FFmpeg is not installed + return False + except IndexError: + # Unable to parse FFmpeg filters + return False + return "rubberband" in filters.stdout.decode() + + def is_raspberry_pi(): try: return ( diff --git a/pikaraoke/templates/home.html b/pikaraoke/templates/home.html index 94ba133d..fb6a5856 100644 --- a/pikaraoke/templates/home.html +++ b/pikaraoke/templates/home.html @@ -82,8 +82,10 @@ $(".control-box").hide(); var slider = document.getElementById("transpose"); + console.log("slider returned: ", slider) var output = document.getElementById("semitones-label"); - if (slider) { + console.log("output returned: ", output) + if (slider && output) { output.innerHTML = getSemitonesLabel(slider.value); // Update the current slider value (each time you drag the slider handle) slider.oninput = function () { @@ -230,6 +232,8 @@

{% trans %}Player Control{% endtrans %}


+ + {% if is_transpose_enabled %}
{# MSG: Title of a control to change the key/pitch of the playing song. #} @@ -242,7 +246,6 @@

>
-
+ {% endif %} {% endif %} diff --git a/pikaraoke/templates/info.html b/pikaraoke/templates/info.html index ae47d61d..f66ba174 100644 --- a/pikaraoke/templates/info.html +++ b/pikaraoke/templates/info.html @@ -84,7 +84,7 @@

{% trans %}System Info{% endtrans %}

{# MSG: The version of the program "Youtube-dl". #}
  • {% trans %}Youtube-dl (yt-dlp) version:{% endtrans %} {{ youtubedl_version }}
  • {# MSG: The version of the program "ffmpeg". #} -
  • {% trans %}FFmpeg version:{% endtrans %} {{ ffmpeg_version }}
  • +
  • {% trans %}FFmpeg version:{% endtrans %} {{ ffmpeg_version }} {% if not is_transpose_enabled %} (missing lib-rubberband, pitch shift is not supported) {% endif %}
  • {# MSG: The version of Pikaraoke running right now. #}
  • {% trans %}Pikaraoke version:{% endtrans %} {{ pikaraoke_version }}