aboutsummaryrefslogtreecommitdiffstats
path: root/src/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.py')
-rw-r--r--src/util.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/util.py b/src/util.py
index 4b82c77..fd14e2e 100644
--- a/src/util.py
+++ b/src/util.py
@@ -1,4 +1,5 @@
import os
+import av
from kivy.utils import platform
def get_default_download_dir() -> str:
@@ -7,3 +8,31 @@ def get_default_download_dir() -> str:
else:
from pathlib import Path
return os.path.join(str(Path.home()), "Downloads")
+
+# Chatgpt code (:
+# I use av instead of ffmpeg so I can run it on android.
+def convert_mp4_to_mp3(input_file: str, output_file: str) -> None:
+ # Open the input video file
+ with av.open(input_file) as container:
+ # Find the audio stream
+ audio_stream = next(
+ (stream for stream in container.streams if stream.type == 'audio'),
+ None
+ )
+
+ if audio_stream is None:
+ raise ValueError("No audio stream found in the input file")
+
+ # Open an output file for writing
+ with av.open(output_file, 'w') as output_container:
+ # Create an audio stream in the output container
+ output_audio_stream = output_container.add_stream('mp3')
+
+ # Iterate through frames, decode audio, and encode into the output stream
+ for frame in container.decode(audio_stream):
+ # Encode the frame into the output stream
+ output_packet = output_audio_stream.encode(frame)
+
+ # Write the encoded packet to the output file
+ if output_packet:
+ output_container.mux(output_packet)