it-swarm.com.de

Ist es möglich, die Aufzeichnung zu steuern, wenn Audacity im Hintergrund ausgeführt wird?

Ich möchte Audio aufnehmen, während Audacity im Hintergrund ausgeführt wird, z. weil ich mich auf ein anderes Fenster konzentriere. Ist es möglich, den Start und das Stoppen einer Aufnahme mit globalen Tastaturkürzeln zu steuern?

5
orschiro

Hat Audacity CLI-Optionen?

Leider zeigt ein Blick in man audacity keine interessanten oder relevanten Optionen:

OPTIONS
       -help     display a brief list of command line options

       -version  display the audacity version number

       -test     run  self  diagnostics  tests  (only  present  in development
                 builds)

       -blocksize nnn
                 set the audacity block size for writing files to disk to  nnn
                 bytes

Jedoch...

einfach pausieren/fortsetzen Audacity von cli funktioniert genauso wie das pausieren/fortsetzen der Aufnahme

Ich habe das Anhalten von Audacity als Prozess mit den Befehlen kill -stop <pid> und kill -cont <pid> getestet. Es hat den Job perfekt gemacht; Die Aufnahme wurde sofort gestoppt und sofort fortgesetzt, wenn der Vorgang fortgesetzt wurde. Selbst nach 6 oder 7 Stunden wird die Aufnahme mit diesen Befehlen sofort gestoppt/fortgesetzt.

Das Hinzufügen der beiden Befehle zu Tastenkombinationen bewirkt genau das , was Sie beschreiben.

Wie benutzt man

Fügen Sie den Tastenkombinationen die folgenden zwei Befehle hinzu:

/bin/bash -c "kill -stop $(pgrep audacity)"

... um die Aufnahme anzuhalten (anzuhalten), und

/bin/bash -c "kill -cont $(pgrep audacity)"

... um fortzufahren und Sie haben Ihre eigenen Tastenkombinationen, um die Aufnahme zu starten/zu stoppen (tatsächlich zu pausieren).

Lediglich der erste Start der Aufzeichnung muss über die Audacity-Benutzeroberfläche erfolgen.

Hinzufügen zu Tastenkombinationen

Wählen Sie: Systemeinstellungen> "Tastatur"> "Verknüpfungen"> "Benutzerdefinierte Verknüpfungen". Klicken Sie auf das "+" und fügen Sie die beiden obigen Befehle zwei verschiedenen Tastenkombinationen hinzu.

Optionen erweitern

Natürlich können wir Optionen erweitern, z.

/bin/bash -c "kill -cont $(pgrep audacity) && notify-send Recording"

und

/bin/bash -c "kill -stop $(pgrep audacity) && notify-send Stopped"

enter image description here

... um eine Benachrichtigung über den aktuellen Status anzuzeigen, oder erstellen Sie ein Bedienfeldsymbol, um den aktuellen Status anzuzeigen. Alles ist möglich


Zusätzlich ein Umschalt-Skript, wie in einem Kommentar angefordert

Das folgende Skript schaltet die Aufnahme um. Fügen Sie es entweder einer Tastenkombination hinzu oder starten Sie es auf eine andere Weise.

Das Skript liest den aktuellen Prozessstatus aus der Datei /proc/<pid>/status und entscheidet, wie der Zielstatus lauten soll.

Darüber hinaus benachrichtigt das Skript den Benutzer, was in einer Benachrichtigung geschieht (mithilfe von notify-send).

#!/usr/bin/env python3
import subprocess

try:
    pid = subprocess.check_output(["pgrep", "audacity"]).decode("utf-8").strip()
except subprocess.CalledProcessError:
    pass
else:
    state = "(stopped)" in open("/proc/"+pid+"/status").read()
    if state == True:
        cmd = ["kill", "-cont", pid]; msg = "Recording"
    else:
        cmd = ["kill", "-stop", pid]; msg = "Pausing"
    subprocess.Popen(cmd)
    subprocess.Popen(["notify-send", msg])

Um es zu benutzen

  • Kopiere es einfach in eine leere Datei und speichere es als toggle_record.py
  • Teste es mit dem Befehl:

    python3 /path/to/toggle_record.py
    
  • Wenn alles funktioniert, fügen Sie es zu einer Tastenkombination hinzu, wie weiter oben in der Antwort erläutert.

5
Jacob Vlijm

Kann Audacity gesteuert werden, wenn sein Fenster nicht im Fokus ist?

Theoretisch ja, da es ein Skriptmodul gibt, das anscheinend mit Perl-Skriptsprache verwendet werden kann, aber bis jetzt habe ich noch kein solches gesehen, daher gibt es Potenzial für Perl-Experten Entwickler, eine zu schreiben.

Aber so wie es ist, lautet die Antwort auf Ihre Frage "Nein".

arecord Script

Das Tolle an der Open Source-Community ist, dass es immer eine Alternative gibt. In diesem Fall arecord, das über die Befehlszeile ausgeführt wird. Was Sie unten sehen, ist ein sehr schnelles Skript, das ich erstellt habe und das an eine Tastenkombination gebunden werden soll. Die Bedienung ist einfach: Drücken Sie die Tastenkombination - die Aufnahme beginnt und drücken Sie sie erneut, um die Aufnahme zu stoppen.

Was in diesem Skript "fest codiert" ist, ist der Standard-Aufnahmetyp wav und der Ordner ~/Music/records. Benutzer können dieses Skript nach Belieben bearbeiten, um ihre eigenen Optionen/Dateitypen/Speicherorte usw. zu verwenden. Weitere Optionen finden Sie auf der Manpage arecord.

Irgendwann plane ich, dieses Skript in Python umzuschreiben, um eine genauere Steuerung der Benutzerverzeichnisse zu ermöglichen, Befehlszeilenoptionen hinzuzufügen und vielleicht auch andere Dinge. Derzeit sind 75% der Aufgaben zu erledigen.

Unten finden Sie den Quellcode des Skripts, der auch in meinem GitHub-Repository verfügbar ist. Es gelten die Standardregeln für das Erstellen und Verwenden von Skripten: Stellen Sie sicher, dass sie über ausführbare Berechtigungen verfügen und in Ihrem Ordner ~/bin gespeichert sind

#!/bin/bash
# Author: Serg Kolo
# Date: Dec 1, 2016
# Purpose: simple script for recording audio with arecord
# Written for: https://askubuntu.com/q/855893/295286

record_audio()
{
    # Set up some variables to control arecord here
    # Please remember to quote the variables
    # and pay attention to slashes in file paths

    filetype="wav"
    filename="record_$(date +%H_%M_%m_%d_%Y)"
    directory="$HOME/Music/recordings/"

    if ! [ -d "$directory" ];
    then
        mkdir "$directory"
    fi

    # This part will initiate recording of timestamped
    # please see arecord's man page for other options
    notify-send "Recording started"
    exec arecord -t "$filetype" "$directory""$filename"."$filetype"
}

main()
{
    if pgrep -f "arecord" ;
    then
       pkill -f "arecord" && notify-send "Recording stopped"
    else
       record_audio
    fi
}

main "[email protected]"

zusätzliche Information:

4

Ja. Sie können eine Kombination aus ein Skript, xdotool, wmctrl und buntus Tastenkürzel verwenden.

Erstellen Sie zunächst die Datei, um das Aufnahmefenster auszuwählen, und senden Sie die Befehlstaste an dieses Fenster.

Weisen Sie dann einen Hotkey zu, um das Skript zu aktivieren.

Das Drehbuch

#!/bin/bash

# Specify the Window running your recording by running 
# "./hkrecord.sh getwindowid" from the command line.
# Alternatively you can edit the ~/recordfile and place your own string.  This
# first line of the fie will be used 

# Ensure you have the following "xdotool" and "wmctrl" installed.

recordfile="$HOME/recordfile"

getwindowid(){
    windowid=$(wmctrl -lp | awk '{$2=$3=$4=":"; print $0}'| awk -F: \
'{print $1"\n"$4}' | zenity --list --column="No" --height=800 --width=1000 \
--column="Select your choice" \
--text="Text above column(s)" --hide-column=1 --title="My menu" 2>/dev/null)
    [[ "$windowid" ]] && sed -i "1i @$windowid" $recordfile || \
echo "No Window selected"
    exit
}

if [ ! $# -eq 0 ]; then
    if [[ "x$1" == *"get"* ]]; then     
        echo "Getting the window id"
        getwindowid
        exit
    fi
fi

recordwindow="$(head -n1 $recordfile)"

if [ "$(echo $recordwindow | egrep '@0x')" ]; then
    windowid=$(echo $recordwindow | sed "s/\@//")
else
    windowid=$(echo $(wmctrl -lp|egrep -i $recordwindow)|head -n1|\
awk '{print $1}')
    echo "$windowid|$recordfwindow"  # debug line... can be commented out.
fi

echo "Using WindowID: $windowid" # debug line... can be commented out.

if [ -z $windowid ]; then
    espeak "Can't locate specified window!"
    espeak "Exiting..."
    exit
fi

xdotool key --window $windowid p

Speichern Sie das Skript in einem geeigneten Bereich wie /usr/local/bin/hkrecord.sh.

Weisen Sie den Hotkey zu

Führen Sie das Skript zunächst als Schnelltest über die Befehlszeile aus. Weisen Sie dann die globale Tastenkombination zu. So legen Sie das Fenster fest (nur einmal erforderlich):

$ ./hkrecord.sh getwindow

Wenn Sie hkrecord.sh ohne Argument ausführen, wird die Aufzeichnung gesteuert.

Gehen Sie zu System Settings -> keyboard und fügen Sie eine benutzerdefinierte Tastenkombination hinzu. Wählen Sie einen Hotkey, der nicht mit Ihrem Vordergrundprogramm in Konflikt steht. ich benutze Shift+Ctrl+P.

Dies ist die Konfiguration für die Benutzerdefinierte Verknüpfung:

 Name: Hotkey Record 
 Befehl: /usr/local/bin/hkrecord.sh

Ich habe die Anweisungen als Kommentare in die Skriptdatei eingefügt.

Als zusätzlichen Vorteil kann derselbe globale Hotkey für Wiedergabe anhalten verwendet werden. Ich benutze dieses System als Diktiergerät, um aus meinen aufgezeichneten Notizen zu schreiben.

Ich habe versucht, das Skript sehr einfach zu gestalten, damit es leicht zu verstehen und anzupassen ist. Gründlich getestet, wird es nahtlos funktionieren.

Hinweis: Vielen Dank an don_crissti und George_Vasiliou ( https://unix.stackexchange.com/a/328548/81664 ), die mir bei der Auswahl der GUI geholfen haben Aufnahmefenster.

1
L. D. James