0
votes

I am trying to properly decode a Base64 string from Power Apps to an audio file. The point is: I do decode it and I can play it. But as soon as I try to convert it using ffmpeg or any website, all kind of errors are thrown. I have tried changing the formats too (aac, weba, m4a, wav, mp3, ogg, 3gp, caf), but none of them could be converted to another format.

PS: If I decode the string (which is too big to post here) directly using a website, then the audio file can finally be converted, indicating that the issue is in the code or even in the Python library.

=============== CODE ===============

import os
import base64

mainDir = os.path.dirname(__file__)
audioFileOGG = os.path.join(mainDir, "myAudio.ogg")
audioFile3GP = os.path.join(mainDir, "myAudio.3gp")
audioFileAAC = os.path.join(mainDir, "myAudio.aac")
binaryFileTXT = os.path.join(mainDir, 'binaryData.txt')


with open(binaryFileTXT, 'rb') as f:
    audioData = f.readlines()
    audioData = audioData[0]

with open(audioFileAAC, "wb") as f:
    f.write(base64.b64decode(audioData))

Result: the audio file is playable, but it cannot be converted to any other format (I need *.wav). What am I missing here?

1

1 Answers

1
votes

I found the issue myself: in order to decode the Base64 string, one must remove the header first (eg.: "data:audio/webm;base64,"). Then it works!