Audio to video conversion works now, all bugs seems to be fixed.
This commit is contained in:
@@ -19,5 +19,6 @@ sound = "play -qV0 \"|sox -np synth .07 sq 400\" \"|sox -np synth .5 sq 800\" fa
|
|||||||
# Escape always exits without action (built-in)
|
# Escape always exits without action (built-in)
|
||||||
# Unbound keys are ignored - the mode waits for a valid key
|
# Unbound keys are ignored - the mode waits for a valid key
|
||||||
|
|
||||||
|
a = "/usr/local/bin/select_audio_convert.sh"
|
||||||
r = "/usr/local/bin/record.sh"
|
r = "/usr/local/bin/record.sh"
|
||||||
w = "brave"
|
w = "brave"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ Dates are given for the image. All items listed are available for the listed ima
|
|||||||
|
|
||||||
## January 1, 2026
|
## January 1, 2026
|
||||||
|
|
||||||
|
- Updated latest released Toby Doom and added Bring Back the 90s
|
||||||
- Update fenrir to latest version and make settings file compatible
|
- Update fenrir to latest version and make settings file compatible
|
||||||
- Upgrade box64
|
- Upgrade box64
|
||||||
- Upgrade rootfs (aarch64)
|
- Upgrade rootfs (aarch64)
|
||||||
@@ -13,6 +14,7 @@ Dates are given for the image. All items listed are available for the listed ima
|
|||||||
- Suppress CMake auto-regeneration to avoid Ninja "build.ninja still dirty" loops.
|
- Suppress CMake auto-regeneration to avoid Ninja "build.ninja still dirty" loops.
|
||||||
- added ability to easily convert your audio recordings to video (easily upload your videos to your site of choice)
|
- added ability to easily convert your audio recordings to video (easily upload your videos to your site of choice)
|
||||||
- Switched to Cthulhu screen reader
|
- Switched to Cthulhu screen reader
|
||||||
|
- Latest release of xlibre
|
||||||
- System updates
|
- System updates
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,10 @@ build_video() {
|
|||||||
local audio_file="$1"
|
local audio_file="$1"
|
||||||
local image_dir="$2"
|
local image_dir="$2"
|
||||||
local container="$3"
|
local container="$3"
|
||||||
|
local output_filename="$4"
|
||||||
|
local output_dir="$HOME/Videos"
|
||||||
|
|
||||||
|
mkdir -p "$output_dir"
|
||||||
|
|
||||||
ffmpeg -y \
|
ffmpeg -y \
|
||||||
-stream_loop -1 -framerate 1/35 -start_number 1 -i "$image_dir/stormux%d.png" \
|
-stream_loop -1 -framerate 1/35 -start_number 1 -i "$image_dir/stormux%d.png" \
|
||||||
@@ -64,7 +68,7 @@ build_video() {
|
|||||||
-c:v libx264 -crf 18 -preset veryfast -r 30 -pix_fmt yuv420p \
|
-c:v libx264 -crf 18 -preset veryfast -r 30 -pix_fmt yuv420p \
|
||||||
-c:a copy \
|
-c:a copy \
|
||||||
-shortest \
|
-shortest \
|
||||||
"$4"
|
"$output_dir/${output_filename##*/}"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$#" -eq 1 ] || usage
|
[ "$#" -eq 1 ] || usage
|
||||||
@@ -82,4 +86,4 @@ output="${name}.${container}"
|
|||||||
|
|
||||||
build_video "$audio" "$image_dir" "$container" "$output"
|
build_video "$audio" "$image_dir" "$container" "$output"
|
||||||
|
|
||||||
echo "Wrote $output"
|
echo "Wrote $HOME/Videos/$output"
|
||||||
|
|||||||
Executable
+96
@@ -0,0 +1,96 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Script to select an audio file and convert it using convert-to-video.sh
|
||||||
|
# Accessibility notes: Uses yad with titles, text labels, and standard GTK keyboard navigation.
|
||||||
|
|
||||||
|
AUDIO_DIR="$HOME/Audio"
|
||||||
|
CONVERTER="/usr/local/bin/convert-to-video.sh"
|
||||||
|
|
||||||
|
# Check if Audio directory exists
|
||||||
|
if [[ ! -d "$AUDIO_DIR" ]]; then
|
||||||
|
echo "The directory $AUDIO_DIR does not exist." |
|
||||||
|
yad --text-info \
|
||||||
|
--title="Error" \
|
||||||
|
--show-cursor \
|
||||||
|
--button="OK:0" \
|
||||||
|
--center
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find audio files (mp3, ogg, opus, wav, flac) case-insensitive
|
||||||
|
# -maxdepth 1: Only look in the top level of the directory
|
||||||
|
# -printf "%f\n": Print only the filename followed by a newline
|
||||||
|
FILES=$(find "$AUDIO_DIR" -maxdepth 1 -type f \( -iname "*.mp3" -o -iname "*.ogg" -o -iname "*.opus" -o -iname "*.wav" -o -iname "*.flac" \) -printf "%f\n" | sort)
|
||||||
|
|
||||||
|
# Check if any files were found
|
||||||
|
if [[ -z "$FILES" ]]; then
|
||||||
|
echo "No audio files available in $AUDIO_DIR." |
|
||||||
|
yad --text-info \
|
||||||
|
--title="No Audio Files" \
|
||||||
|
--show-cursor \
|
||||||
|
--button="OK:0" \
|
||||||
|
--center \
|
||||||
|
--width=300
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Display selection dialog
|
||||||
|
# --list: Create a list box
|
||||||
|
# --column="File": Single column with header
|
||||||
|
# --separator="": Return exact value without extra separators
|
||||||
|
# --search-column=1: Allows typing to jump to files (accessibility win)
|
||||||
|
SELECTED_FILE=$(echo "$FILES" | yad --list \
|
||||||
|
--title="Select Audio File" \
|
||||||
|
--text="Select an audio file to convert:" \
|
||||||
|
--column="File" \
|
||||||
|
--separator="" \
|
||||||
|
--width=600 \
|
||||||
|
--height=500 \
|
||||||
|
--center \
|
||||||
|
--search-column=1)
|
||||||
|
|
||||||
|
# Check exit status
|
||||||
|
# 0 = OK/Enter
|
||||||
|
# Any other value (1, 252) = Cancel or Close
|
||||||
|
RET=$?
|
||||||
|
|
||||||
|
# If user canceled or selection is empty, exit silently
|
||||||
|
if [[ $RET -ne 0 ]] || [[ -z "$SELECTED_FILE" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Construct full path
|
||||||
|
INPUT_FILE="$AUDIO_DIR/$SELECTED_FILE"
|
||||||
|
|
||||||
|
# Run the conversion
|
||||||
|
# We use a subshell to run the command and pipe output to yad
|
||||||
|
(
|
||||||
|
echo "# Converting: $SELECTED_FILE"
|
||||||
|
# Run the converter script
|
||||||
|
"$CONVERTER" "$INPUT_FILE"
|
||||||
|
# Send 100% to yad to close the progress bar (due to --auto-close)
|
||||||
|
echo "100"
|
||||||
|
) | yad --progress \
|
||||||
|
--title="Converting" \
|
||||||
|
--text="Starting conversion for $SELECTED_FILE... This can take a long time." \
|
||||||
|
--pulsate \
|
||||||
|
--auto-close \
|
||||||
|
--auto-kill \
|
||||||
|
--center \
|
||||||
|
--width=500 \
|
||||||
|
--button="Cancel:1"
|
||||||
|
|
||||||
|
# Check if the process completed successfully (yad returns 0 on auto-close/success)
|
||||||
|
PROGRESS_RET=$?
|
||||||
|
|
||||||
|
if [[ $PROGRESS_RET -eq 0 ]]; then
|
||||||
|
echo "Transcode complete." |
|
||||||
|
yad --text-info \
|
||||||
|
--title="Success" \
|
||||||
|
--show-cursor \
|
||||||
|
--button="OK:0" \
|
||||||
|
--center \
|
||||||
|
--width=300
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user