Extraire tous les fichiers audio du conteneur avec ffmpeg

2

Y a-t-il un moyen d'utiliser -acodec copyavec -vnpour:

  • Extraire le flux audio d'un conteneur, tel que mp4
  • Sans connaître le codec audio au préalable
  • Et enregistrez-le dans un fichier audio avec l'extension appropriée
paulkon
la source
2
Quelle est l'extension "appropriée"? Vous pouvez utiliser Matroska (.mka) ou NUT (.nut) avec la plupart des formats audio, mais je doute que ce soit ce que vous souhaitiez.
llogan

Réponses:

0

La raison pour laquelle ce n'est pas une option simple dans ffmpeg est parce que vous avez besoin d'un moyen de décider quel conteneur utiliser pour la sortie.

Si vous avez déterminé quelle extension de fichier utiliser pour chaque codec et si vous avez nommé le fichier avec cette extension, ffmpeg écrira le fichier de sortie dans le conteneur approprié pour vous. La façon (malheureusement) la plus simple de le faire, à laquelle je peux penser, est un script 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)
Taymon
la source
-4

jetez un oeil à handbrake, gui pour ffmpeg avec la sortie en ligne de commande (et commande) (si vous voulez le porter sur un script quelconque)

npcw
la source
2
Comment cela aide-t-il? Il fait juste la même chose que ffmpeg avec une interface graphique, ce qui n’est pas ce que demande OP.
Lily Hahn