Extraia qualquer áudio do container com ffmpeg

2

Existe uma maneira de usar -acodec copy com -vn para:

  • Extraia o fluxo de áudio de um contêiner, como mp4
  • Sem conhecer antecipadamente o codec de áudio
  • E salve-o em um arquivo de áudio com a extensão apropriada
por paulkon 29.12.2013 / 23:37

2 respostas

0

A razão pela qual isso não é uma opção simples no ffmpeg é porque você precisa decidir o container a ser usado na saída.

Se você determinou qual extensão de arquivo usar para cada codec e nomeou o arquivo com essa extensão, o ffmpeg gravaria o arquivo de saída no container correto para você. A maneira (infelizmente) mais simples de fazer isso é um script do Python 2:

import re
import subprocess
import sys

EXTENSIONS_BY_CODEC = {'mp3': '.mp3', 'aac': '.m4a'}
# Add more codecs as desired

_, infile, outfile = sys.argv
_, detect_data = subprocess.Popen(('ffmpeg', '-i', infile),
                                  stderr=subprocess.PIPE).communicate()
codec = re.search(r'Audio: ([^,]+),', detect_data).group(1)
if codec in EXTENSIONS_BY_CODEC:
    sys.exit(subprocess.call(('ffmpeg', '-i', infile, '-acodec', 'copy', '-vn',
                              outfile + EXTENSIONS_BY_CODEC[codec])))
else:
    print >>sys.stderr, 'Extension not found for codec:', codec
    sys.exit(2)
    
por 30.12.2013 / 02:12
-4

dê uma olhada no handbrake, gui para ffmpeg com a saída de linha de comando (e comando) (se você quiser portá-lo para um script de algum tipo)

    
por 30.12.2013 / 01:03