Когда у Вас есть OpenSUSE, можно скопировать сценарий в/etc/init.d и выполнить insserv название сценария. insserv включает сценарий: http://man-wiki.net/index.php/8:insserv.
В первую очередь, -aq
устанавливает скорость передачи качественной базируемой переменной - я думаю, что Вы ищете -ab
(обратите внимание, что я - ffmpeg пользователь, таким образом, мое знание avconv синтаксиса ограничено - я понятия не имею, как далеко это дрейфовало начиная с ветвления).
Независимо, встроенный avconv/ffmpeg AAC кодер довольно плох.
Единственный действительно хороший кодер AAC для avconv/ffmpeg является libfdk_aac - но лицензия на это является несовместимой с GPL, поэтому для получения доступа к нему, необходимо будет скомпилировать собственное (это - ffmpeg руководство по компиляции, так как я не знаю об одном для avconv - руководство Ubuntu должно быть хорошо для Debian, так как я не думаю, что существует что-либо определенное для Ubuntu там).
После того как Вы имеете его, следуете за AAC, кодирующим руководство; я настоятельно рекомендую испытать fdk_aac -vbr
опция - установка 3 звуков, очевидных для меня на всех файлах, которые я попробовал, если Вы хотите плацебо более высокой скорости передачи, или Вы - звукооператор, можно попробовать установку 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Никакая потребность в -map_metadata
, так как ffmpeg автоматически передаст метаданные (и я вполне уверен, что avconv будет также).
Для фиксированной скорости передачи 320 Кбит/с (серьезно, это не стоит того, AAC, достигают аудио прозрачности по сравнению с исходным аудио CD приблизительно на уровне фиксированных 128 Кбит/с):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
Кодер Nero AAC нужно рассмотреть наравне с fdk_aac и qaac (Quicktime AAC). Различные люди дадут различные мнения, на которых лучше, но Вы только заметите любые различия на уровнях очень младшего бита, и все соглашаются, что они все очень высококачественны.
neroAacEnc
доступно с веб-сайта Nero. Разархивируйте его и поместите его где-нибудь в Ваш $PATH.
К сожалению, neroAacEnc
может только взять аудио WAV в качестве входа; можно обойти это при помощи avconv или ffmpeg как декодер:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
К сожалению, это разделит метаданные; для передачи этого используйте avprobe/ffprobe (с -show_format
) извлечь и neroAacTag для вставки. Сценарий удара, вероятно, был бы в порядке.
Посмотрите страницу HydrogenAudio на neroAacEnc: из памяти, a -q
установка 0,4 звучала великолепно мне. Можно быть нацелены на небольшой уровень с -br
(снова, я думаю, что это было бы путем излишество):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
Править: вот сценарий для преобразования звуковых файлов к m4a с neroAacEnc, затем отмечающий с ffprobe и neroAacTag (требует, чтобы они все были в каталоге в Вашем $PATH). Может потребоваться несколько входных файлов, поэтому при сохранении его как convert-to-m4a
, можно преобразовать каждый файл FLAC в каталоге с
convert-to-m4a *.flac
Это не ограничено просто файлами FLAC; любой формат аудио, который может декодировать Ваш ffmpeg/avconv, будет работать. Можно хотеть изменить ffprobe и ffmpeg к avprobe и avconv:
#!/usr/bin/env bash
until [[ "$1" = '' ]]; do
ffmpeg -i "$1" -f wav - | neroAacEnc -if - -ignorelength -q 0.4 "${1%.*}.m4a"
tags=()
while read -r; do
tags+=("$REPLY")
done < <(ffprobe -i "$1" -show_format 2>/dev/null | sed -ne 's/date/year/' -e '/TAG:/s/TAG/-meta/p')
neroAacTag "${1%.*}.m4a" "${tags[@]}"
shift
done
exit 0
Это мой скрипт, обёртывающий ffmpeg для преобразования любого поддерживаемого аудио формата в AAC (с использованием кодировщика libfdk-aac, который является рекомендуемым кодировщиком aac от ffmpeg wiki).
#!/usr/bin/env python2.7
from optparse import OptionParser
from subprocess import call
from os.path import splitext
import sys, os
def ffaac(filename, opts):
cmd = ['ffmpeg', '-hide_banner', '-y', '-i', filename,
'-vn', '-c:a', 'libfdk_aac']
profile = {'lc':'aac_low', 'he':'aac_he', 'he2':'aac_he_v2',
'ld':'aac_ld', 'eld':'aac_eld'}
if not opts.br and not opts.vbr:
cmd.extend(['-b:a', '320k'])
if opts.br:
cmd.extend(['-b:a', str(opts.br)+'k'])
if opts.vbr:
cmd.extend(['-vbr', opts.vbr])
if opts.ar:
cmd.extend(['-ar', opts.ar])
if opts.ch:
cmd.extend(['-ac', opts.ch])
cmd.extend(['-profile:a', profile[opts.prof]])
if opts.prof == 'eld' and opts.sbr:
cmd.extend(['-eld_sbr', '1'])
cmd.extend(['-f', 'adts'])
if filename.lower().endswith('.aac'):
return
outfile = splitext(filename)[0] + '.aac'
cmd.append(outfile)
return call(cmd)
if __name__=='__main__':
parser = OptionParser(sys.argv[0]+' [OPTIONS] FILE ...')
parser.add_option('-b', metavar='NUM', type=int, dest='br', help='bitrate')
parser.add_option('-r', metavar='NUM', choices=['8000','11025','16000','22050','32000', '44100', '48000'], dest='ar', help='sample rate: 8000/11025/22050/32000/44100/48000')
parser.add_option('-c', metavar='NUM', choices=['1','2'],dest='ch', help='channels: 1/2')
parser.add_option('-p', metavar='TYPE',choices=['lc', 'he', 'he2', 'ld', 'eld'], default='lc', dest='prof', help='profile: lc/he/he2/ld/eld')
parser.add_option('-v', metavar='QUAL', choices=['1', '2', '3', '4', '5'], dest='vbr', help='vbr quality: 1/2/3/4/5')
parser.add_option('-s', action='store_true', dest='sbr', help='use SBR for ELD')
parser.add_option('-d', action='store_true', dest='delete',help='delete source after converting')
opts, args = parser.parse_args()
for f in args:
if ffaac(f, opts) == 0 and opts.delete :
try:
os.remove(f)
except OSError:
pass
Сообщение помощи командной строки:
Usage: /Users/leon/bin/ffaac.py [OPTIONS] FILE ...
Options:
-h, --help show this help message and exit
-b NUM bitrate
-r NUM sample rate: 8000/11025/22050/32000/44100/48000
-c NUM channels: 1/2
-p TYPE profile: lc/he/he2/ld/eld
-v QUAL vbr quality: 1/2/3/4/5
-s use SBR for ELD
-d delete source after converting
Я предлагаю использовать FFmpeg для преобразования из FLAC в AAC. FFmpeg легко устанавливается на машину Mac OS X с brew:
brew install ffmpeg
Затем выполните следующую команду, чтобы преобразовать все файлы FLAC в текущем каталоге в AAC:
for i in *flac;do of="${i/.flac/.m4a}"; ffmpeg -i "${i}" -vn -acodec libvo_aacenc -b:a 320k -f mp4 -y "${of}";done
И чтобы преобразовать их в MP3:
for i in *flac;do of="${i/.flac/.mp3}"; ffmpeg -i "${i}" -vn -acodec mp3 -b:a 320k -f mp3 -y "${of}";done
Для обработки
find
's -print0
+ xarg
's-0
)$1
из позиционного аргумента sh -c
--FILE
, установленного xarg
-I
)find. -name '*.flac' -print0 | xargs -0 -I FILE sh -c 'ffmpeg -i "$1" -c:a libfdk_aac -vbr 3 "${1%.flac}.m4a"' -- FILE
brew install ffmpeg --with-fdk-aac
. можно получить список опций сbrew info ffmpeg
. Но хорошая идея не украсть Mac :) – Jonathan Komar 26.07.2014, 11:47