blob: fd14e2e59466fea7cadaf3a310aed6ba06c52de9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import os
import av
from kivy.utils import platform
def get_default_download_dir() -> str:
if platform == "android":
return "/sdcard/Download"
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)
|