audio converter
This commit is contained in:
parent
90a0343cbb
commit
75eb1196b0
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -160,3 +160,5 @@ cython_debug/
|
|||
#.idea/
|
||||
|
||||
.env
|
||||
audios/*.mp3
|
||||
audios/*.ogg
|
||||
|
|
|
|||
0
audios/.gitkeep
Normal file
0
audios/.gitkeep
Normal file
13
chain_service/dependencies/audio_converter_service.py
Normal file
13
chain_service/dependencies/audio_converter_service.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
from chain_service.services.audio_converter import AudioConverterService
|
||||
|
||||
from fastapi import Depends
|
||||
from typing import Annotated
|
||||
|
||||
|
||||
def get_audio_converter_service() -> AudioConverterService:
|
||||
return AudioConverterService()
|
||||
|
||||
|
||||
AudioConverterServiceDependency = Annotated[
|
||||
AudioConverterService, Depends(get_audio_converter_service)
|
||||
]
|
||||
33
chain_service/services/audio_converter.py
Normal file
33
chain_service/services/audio_converter.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
from chain_service.utils.sync_to_async import sync_to_async
|
||||
|
||||
import os
|
||||
import ffmpeg
|
||||
import aiofiles
|
||||
from uuid import uuid4
|
||||
from io import BytesIO
|
||||
|
||||
|
||||
class AudioConverterService:
|
||||
|
||||
@sync_to_async
|
||||
def __mp3_to_ogg(self, mp3: BytesIO) -> str:
|
||||
filename = f"./audios/{uuid4()}.ogg"
|
||||
|
||||
process = (
|
||||
ffmpeg.input("pipe:")
|
||||
.output(filename, loglevel="quiet")
|
||||
.overwrite_output()
|
||||
.run_async(pipe_stdin=True)
|
||||
)
|
||||
|
||||
process.communicate(input=mp3.getbuffer())
|
||||
return filename
|
||||
|
||||
async def mp3_to_ogg(self, mp3: BytesIO) -> BytesIO:
|
||||
filename = await self.__mp3_to_ogg(mp3)
|
||||
|
||||
async with aiofiles.open(filename, "rb") as file:
|
||||
content = BytesIO(initial_bytes=await file.read())
|
||||
|
||||
os.remove(filename)
|
||||
return content
|
||||
Loading…
Reference in New Issue
Block a user