Extrair áudio de vídeos com FFMpeg

Imaginem que têm uma diretoria onde têm múltiplos ficheiros, inclusive ficheiros de vídeo e querem extrair o áudio sem fazer encoding para não perderem a qualidade existente

Podem usar este script de powershell para extrair com o ffmpeg o áudio sem encoding.

# Defina as diretorias de input onde estão os ficheiros de video
# e a directoria de output onde quer que fiquem os ficheiros extraidos
$inputDir = "C:\example\input\directory"
$outputDir = "C:\example\output\directory"

# Defina a localização ffmpeg.exe
$ffmpegPath = "C:\path\to\ffmpeg\bin\ffmpeg.exe"

# Ensure the output directory exists
if (-not (Test-Path $outputDir)) {
    New-Item -ItemType Directory -Path $outputDir
}

# Lista todos os ficheiros da diretoria com a extenção .mp4, mude para as suas necessidades a
Get-ChildItem -Path $inputDir -Filter "*.mp4" | ForEach-Object {
    $inputFile = $_.FullName
    $outputFile = [System.IO.Path]::Combine($outputDir, ($_.BaseName + ".mp3"))

    # FFmpeg command to extract audio without re-encoding
    Start-Process -Wait -NoNewWindow -FilePath $ffmpegPath -ArgumentList "-i `"$inputFile`" -vn -acodec copy `"$outputFile`""
}

Só necessitam de alterar as variáveis para as vossas necessidades:

$inputDir -> com a localização dos ficheiros de vídeo.

$outputDir -> pela localização onde quer os ficheiros de áudio extraído. Esta diretoria tem que existir antes de correr o comando.

$ffmpegPath -> localização onde tem o FFMpeg.exe

Nota – No filtro “*.mp4” faz com o script só use todos os ficheiros com a extensão .mp4. Pode alterar para as suas necessidades. Como exemplo pode ter uma diretoria com múltiplos ficheiros .mov e só queria todos os que tivessem no nome “audio” pode usar no filtro algo como “*audio*.mov” desta forma só estes eram usados para a extração do áudio.

Por vezes pode ser necessário mudar a extensão do output, pois o ffmpeg espera que a extensão do ficheiro de output tenha a designação correta do que está a extrair. Se está a extrair por exemplo audio AAC. A extensão de output deve ter algo como “.aac”. Caso contrário dá erro.

Pode fazer o download do script no GitHub

Espero ter ajudado.

Pode fazer uma doação para ajudar a mater o site, Obrigado!