2

Есть ли способ использовать -acodec copy с -vn для:

  • Извлеките аудиопоток из контейнера, такого как mp4
  • Не зная заранее аудиокодек
  • И сохраните его в аудиофайл с соответствующим расширением

2 ответа2

0

Причина, по которой это не простая опция в ffmpeg, заключается в том, что вам нужен способ решить, какой контейнер использовать для вывода.

Если вы определили, какое расширение файла использовать для каждого кодека, и назвали файл с таким расширением, ffmpeg запишет выходной файл в нужный вам контейнер. (К сожалению) самый простой способ сделать это, на мой взгляд, это скрипт на 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)
-4

взгляните на ручник, графический интерфейс для ffmpeg с выводом командной строки (и команды) (если вы хотите перенести его в какой-то скрипт)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .