LINUX.ORG.RU

пара вопросов по ffmpeg

 ,


0

1

1) Допустим надо сконвертировать из одного формата в другой, но СОХРАНИВ ПО МАКСИМУМУ КАЧЕСТВО.

Есть например музыка в wma, нужно сконвертировать, например, во flac или mp3. Есть ли универсальные способы для этого? Или нужно каждый раз ему указывать битрейт, частоту дискретизации и подобную шелуху? т.е как задать брать по максимуму возможного качества по всем параметрам?

2) Он (ffmpeg) падла портит качество, если всего лишь нужно склеить дорожки из разных файлов, хотя я его не просил портить качество!
При попытке сделать -map 0:1 -map 1:0 он делает перекодирование не спросив меня об этом!!!

Есть ли универсальный ключь типа --save-quality? Нужно как для перекодирования, так для склейки дорожек.

★★★★★

Последнее исправление: teod0r (всего исправлений: 3)

От кодирования во flac качество не ухудшится. От последующего кодирования в любой lossy, естественно, ухудшится. Далеко не всегда форматы lossy позволяют склеивать файлы без перекодирования.

d ★★★★
()

Он (ffmpeg) падла даже портит качество, если всего лишь нужно склеить дорожки из разных файлов, хотя я его не просил портить его!

Как не просил, когда просил? При кодировании lossy→lossy всегда теряется качество и сделать с этим ничего нельзя.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от d

мне нужен ключ, который гарантировано не будет портить (максимально, на сколько это возможно). Ещё раз: я склеивал дорожки, результат — выходной файл раз в 10 меньше! пока я ему не передал -c:a copy -c:v copy он не переставал портить. Так вот, нужно какое-то унифицированное средство оставлчть максимальное качество. а не вводить тонну ключей, просящих не портить. а с конвертацией там ещё больше ключей надо прописывать (flac только пример)

teod0r ★★★★★
() автор топика

Есть например музыка в wma, нужно сконвертировать, например, во flac. Есть ли универсальные способы для этого? Или нужно каждый раз ему указывать битрейт, частоту дискретизации и подобную шелуху?

Битрэйт flac в принципе не позволяет задать. Частоту дискретизации ffmpeg по умолчанию берёт из исходного файла (и вообще лучше её не трогать без ясного понимания что ты делаешь). Конкретно в случае с flac-ом нужно приложить дополнительные усилия чтобы в процессе конвертации изменить звук. Но ты поминаешь -c:v, так что видимо проблемы у тебя не с конвертацией WMA во FLAC. Конвертирование в lossy это всегда потеря качества (точнее исходных данных), и нужно задать (явно или не явно) степень допустимого искажения исходных данных (зачастую задаётся параметром -crf) или другие ограничения.

MrClon ★★★★★
()
Ответ на: комментарий от Ros

почему когда я просто склеиваю звук и видео он по умолчанию портит качество?
делаю -map:0:1 -map 1:0, а он делает перекодирование в стрёмный формат не спросив меня даже. почему он произвольно меняет формат, без явного указания не делать так — -c:a copy -c:v copy)?

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 2)
Ответ на: комментарий от Ros

а вот если я хочу музыку конвертировать из одного формата в другой (wma,mp3,flac,opus,...); из того, в чём не видишь ты беды какие (ВСЕ) ключи мне передавать, чтоб получить максимально возможное высокое качество?

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от teod0r

Потому что

ffmpeg is a very fast video and audio converter
Его основное назначение — перекодирование. Он может, конечно, выступать ремуксером, но это не его основная функция. Поэтому по умолчанию он кодирует. Не указан кодек — использует кодек по умолчанию. Не указан битрейт — использует битрейт по умолчанию. И так для всех миллионов опций.

P.S. И вообще, если тебе надо просто склеить дорожки, то почему не mkvtoolnix? Ладно бы дело было лет 10 назад, когда ещё существовало (точнее, доживало свой век) много устройств без поддержки матрёшки, но ведь те тёмные времена давно прошли.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

теперь понятно. а где можно удобно посмотреть все ключи отвечающие за качество индивидуально для каждого формата? рыскать по ману каждый раз для каждого формата и искать там что-то не так удобно. может есть где готовая таблица чисто с перечислением всех опций отвечающих за качество для каждого формата?

teod0r ★★★★★
() автор топика

Перекодирование дорожки кодеком с потерями обязательно будет портить качество. Как и изменение частоты дескретизации/кадров, смена разрешения, наложение фильтров, обрезка кадра. Так что смирись.

Если перекодирование не требуется, то -vcopy -acopy (или я привык -acodec copy -vcodec copy).

kirill_rrr ★★★★★
()
Ответ на: комментарий от Tanger

Так и перекодируй в mp3

а mp3 ещё более lossy не сделает? оно ведь низы и верха режет

через ключ -ab 320k.

вот в этом то и проблема, может, там ещё есть тонна опций, отвечающих за качество? есть же ещё частота дискретизации, может, ещё что есть? почему нельзя сразу указать --save-maximum-quality ? мне ведь ещё из opus надо, плеер его тоже не поддерживает... а там ещё, может, какие опции должны быть, мне откуда знать?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

есть же ещё частота дискретизации, может, ещё что есть?

ffmpeg выводит тебе что он получает на входе и что ты получишь на выходе.

Типа:

Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)

Вот и последи, чтобы у тебя stereo не превратилось в mono и частоста дискретизации не изменилась.

а mp3 ещё более lossy не сделает? оно ведь низы и верха режет

А ты послушай. Услышишь разницу - попробуй bitrate увеличить.

Tanger ★★★★★
()
Ответ на: комментарий от teod0r

есть же ещё частота дискретизации, может, ещё что есть? почему нельзя сразу указать –save-maximum-quality ?

Частота дискретизации должна быть той же, если ее поменять, это опять приведет к еще какой-то доли потери качества. –save-maximum-quality для mp3 это макс битрейт 320 если прям максимум кволити, меньшие значения внезапно дадут результат хуже, но, конечно, разницы ты можешь не услышать. Поэтому такой опции нет. Если место не проблема, перегоняй во флак или 320 mp3, последнее все равно будет раза в 3 меньше флака.

мне ведь ещё из opus надо

Имей в виду, что opus 160k примерно соответствует mp3 320)

goingUp ★★★★★
()
7 января 2023 г.
Ответ на: комментарий от goingUp

перегоняй во флак

вобще изначально так и хотел. какие параметры нужно указывать?
ещё мне aac во flac надо. как?
где мне каждый раз искать, какие ключи для этого всего нужны, чтоб было без потерь?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

Можно конечно ffmpeg, «на лету» из формата в формат. Но однажды столкнулся с проблемными полученными flac, после их проигрывания не стартовал следующий трек, только вручную. Поэтому я заново все перекодировал, как-то так (не точно, забыл уже разовую задачу):

faad -o outfile.wav infile.aac
flac -8 outfile.wav
dmitry237 ★★★
()
Ответ на: комментарий от teod0r

а зачем сначала в wav?

Не доверяю ffmpeg -i input.aac output.flac

Может ложные представления, но считаю, что декодеры и инкодеры родных для них форматов решат задачу лучше комбайна ffmpeg.

dmitry237 ★★★
()

Есть ли универсальный ключь типа –save-quality? Нужно как для перекодирования, так для склейки дорожек.

-c copy. Это чтобы дорожки не перекодировать.

А если перекодировать, то о каком сохранении качества может идти речь? Впрочем, я могу предположить, что имеется в виду например из RAW PCM во FLAC, тогда так: ffmpeg -i $inputfile -c copy -c:a flac $outputfile

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от teod0r

а вот если я хочу музыку конвертировать из одного формата в другой (wma,mp3,flac,opus,…); из того, в чём не видишь ты беды какие (ВСЕ) ключи мне передавать, чтоб получить максимально возможное высокое качество?

Не надо так делать! Lossy→Lossy кодирование — это очень плохо, и всегда будут большие потери качества. Перекодировать без потери качества можно только из lossless в lossless. Также имеет смысл из lossless в lossy (естественно с потерей, но адекватной). Из lossy никуда ничего перекодировать не надо — оставляй всегда как есть, или ищи источник получше.

CrX ★★★
()
Ответ на: комментарий от dmitry237

Может ложные представления, но считаю, что декодеры и инкодеры родных для них форматов решат задачу лучше комбайна ffmpeg.

ffmpeg использует те же самые энкодеры и декодеры внутри, но в единообразной, насколько это возможно, обёртке.

firkax ★★★★★
()
Ответ на: комментарий от CrX

Из lossy никуда ничего перекодировать не надо — оставляй всегда как есть, или ищи источник получше.

я же написал, что мне нужно для аппаратного плеера перекодировать, т.к. не все форматы поддерживает. и я хотел во flac.
а лучше источника не нашёл

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от teod0r

Потому что именно в wav можно разжать что-то сжатое. WAV — это непожатый PCM. С помощью ffmpeg можно сразу в flac, минуя промежуточный wav. Вот так: ffmpeg -i file.opus -c:a flac file.flac. В памяти при этом, конечно же, всё равно будет разжиматься в сырой PCM, а он уже жаться в flac.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от teod0r

так кто его просит перекодирование делать? указывается только дорожки склеить?

Это вообще в принципе не всегда и не для всех кодеков решаемая задача. Особенно если речь про видео с ключевыми кадрами — указываешь временную метку начала, а соответствующий ей кадр оказывается не ключевым. И начинается перекодирование.

С аудио теоретически должно быть попроще, но опять-таки с lossy теряется однозначность…

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от teod0r

Никогда не сталкивался. Аудио-книги слушаю в mp3. Ведь opus, если не ошибаюсь, для этого и предназначен?

dmitry237 ★★★
()
Последнее исправление: dmitry237 (всего исправлений: 1)
Ответ на: комментарий от firkax

ffmpeg использует те же самые энкодеры и декодеры внутри

Так-то оно так, но, как написал выше, сталкивался с ошибками при перекодировании. Я не знаю, что было причиной, кривые aac или ffmpeg, но после перекодирования через wav ошибок не было.

dmitry237 ★★★
()
Ответ на: комментарий от teod0r

Для воспроизведения разговорного аудио, я это имел ввиду. При низком битрейте и размере хорошее аудио – стриминговая передача в телефонии, мессенджерах, разговорные движки, аудио-книги, игры и т.д. Что, конечно, не отрицает использование этого кодека и для высококачественного звука.

dmitry237 ★★★
()