Allow reading of audio files via str path

This commit is contained in:
Josh Meyer 2021-08-16 06:22:20 -04:00
parent 4fc60bf5e9
commit 31b9280194

View File

@ -500,6 +500,7 @@ def write_wav(wav_file, pcm_data, audio_format=DEFAULT_FORMAT):
def read_wav(wav_file):
if not type(wav_file) is str:
wav_file.seek(0)
with wave.open(wav_file, "rb") as wav_file_reader:
audio_format = read_audio_format_from_wav_file(wav_file_reader)
@ -530,6 +531,7 @@ def write_audio(
def read_wav_duration(wav_file):
if not type(wav_file) is str:
wav_file.seek(0)
with wave.open(wav_file, "rb") as wav_file_reader:
return wav_file_reader.getnframes() / wav_file_reader.getframerate()
@ -542,6 +544,11 @@ def read_opus_duration(opus_file):
def read_ogg_opus_duration(ogg_file):
error = ctypes.c_int()
if type(ogg_file) is str:
opusfile = pyogg.opus.op_open_file(
bytes(ogg_file, encoding="utf-8"), ctypes.pointer(error)
)
else:
ogg_file_buffer = ogg_file.getbuffer()
ubyte_array = ctypes.c_ubyte * len(ogg_file_buffer)
opusfile = pyogg.opus.op_open_memory(
@ -575,6 +582,7 @@ def read_duration(audio_type, audio_file):
def read_wav_format(wav_file):
if not type(wav_file) is str:
wav_file.seek(0)
with wave.open(wav_file, "rb") as wav_file_reader:
return read_audio_format_from_wav_file(wav_file_reader)