LINUX.ORG.RU

как конвертировать видео в аудио без потерь?

 


1

0

Подскажите, как в консоли получить аудио с максимально возможным качеством?

Нагуглилось только:

ffmpeg -i video -f flac -q:a 1 -vn -- music

-q:a 1 даст максимальный битрейт и частоту, или нужны ещё какие-то ключи?
В lame, например есть ключ -h для максимального качества.

man ffmpeg такой огромный! Наверное самый большой ман, который я когда либо видел.

UPD:

что с -q:a 1, что без него

что с -b:a n, что без него

для некоторых файлов output получается больше, чем input

-codec:a:1 copy тоже ничего не изменил.

единственное, когда что-то меняется, когда задаю .mp3, а не flac

★★★★★

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

Конвертировал указанным способом 90 мегабайтное видео с ютуба, получил 49 мегабайтный флак.
Прикол в том, что там в этом «видео» статичная картинка 1920х1080 — что же картинка весит 40M?

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

что же картинка весит 40M?

IBBPBBBPBBBPBBBPBBBPBBIBBPBBBPBBBPBBBPBBBPBBIBBPBBBPBBBPBBBPBBBPBBIBBPBBBPBBBPBBBPBBBPBB...

«B» и «P» весят мало, но «I» всегда в полном разрешении. Вот и набирается.

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

Если надо именно с ютуба, то youtube-dl может выдрать аудио.

greenman ★★★★★
()
Ответ на: комментарий от i-rinat

«B» и «P» весят мало, но «I»

где можно доходчиво почитать про эти 'B' 'I' 'P', и как настроить в vlc всё что с ними связано для максимального качества?

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

Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

Сработало только так:

ffmpeg -i input_file -codec:a:1 copy -f flac output_file
Полученый результат совпадает с предыдущим.

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

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

даже если не указывать -q:a 1 и указать -b:a <битрейт_источника>, всё равно получается то же самое

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

как конвертировать видео в аудио без потерь

Никак.
А вот вытащить из видео-файла звуковую дорожку - это можно.

Предложу еще пару вариантов:
1) сохранить аудио-поток:

mplayer -dumpaudio source.mp4
2) сохранить как wav (аудио-файл будет не сжатый и может превышать по размеру исходный видео-файл):
mplayer -vc null -vo null -channels 2 -ao pcm:fast:file=./out.wav source.mp4

всё равно получается то же самое

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

ffmpeg -i source.mp4
ffmpeg -i out.mp3

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

Пример для видео с youtube:

#!/bin/bash
#ссылка на исходное видео
URL='https://www.youtube.com/watch?v=2bMDC7P_y5o'
#определяем, какое будет имя файла
FNAME=$(youtube-dl --get-filename ${URL})
#скачиваем
youtube-dl ${URL}
#вариант-1: просто вытаскиваем аудио-поток (не всегда потом можно обработать)
mplayer -dumpaudio "${FNAME}"
mv stream.dump "${FNAME}.audio-dump"
#вариант-2: сохраняем аудио-дорожку как двухканальную (стерео) в WAV-файл
mplayer -vc null -vo null -channels 2 -ao pcm:fast:file="./${FNAME}.wav" "./${FNAME}"

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

input:
Duration: 00:09:01.96, start: 0.000000, bitrate: 250 kb/s
Stream #0:0: Video: h264 (Main), yuv420p, 480x272, 116 kb/s, 25 tbr, 1k tbn, 50 tbc
Stream #0:1: Audio: aac, 44100 Hz, stereo, s16, 131 kb/s
output:
Duration: 00:09:02.04, bitrate: 940 kb/s
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16

битрейт задаю -b:a 131k — один фиг получаю 940k

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

битрейт задаю -b:a 131k — один фиг получаю 940k
output:
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16

У тебя флак на выходе, какой к лешему битрейт? Вторая буква в слове fLac от слова Loseless

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

У тебя флак на выходе, какой к лешему битрейт?

т.е флаку нельзя задать битрейт? и если даже нельзя, зачем он из 131 делает 940? смысл? почему не 2700 сразу?

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

Чтоб дошкольников озадачить же.

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

т.е флаку нельзя задать битрейт?

Нет, конечно. Как сожмется, так и сожмется, сжатие без потерь же. Ты же не задаешь «битрейт» zip'у.

и если даже нельзя, зачем он из 131 делает 940?

А он и не делает. ffmpeg декодирует исходный поток в сырой поток (около 1400kbit/s), потом кодирует его без потерь во флак, вот и получается 940. Свою задачу по превращению 1400 в 940 флак исполнил.

redgremlin ★★★★★
()

конвертировать видео в аудио

Упорись
@
Конвертируй ковёр в видео с аудио

anonymous
()
Ответ на: комментарий от redgremlin

ffmpeg декодирует исходный поток в сырой поток (около 1400kbit/s)

почему именно 1400? можно задать другое?

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

-# --fast --best
Regulate the speed of compression using the specified digit #, where -1 or --fast indicates the fastest compression method (less compression) and -9 or --best indicates the slowest compression method (best compression).

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

Это не задает битрейт. Битрейт (минимальный) определяется источником, эти настройки регулируют, каким дополнительным битрейтом можно пожертвовать ради скорости.

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

подозреваю что в h264 да еще на статичном материале ситуация совершенно иная.

Такая же. Ну разве что SI и SP добавились, но они только сглаживают битрейт, а не понижают его.

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

В вашем примере расстояние между ключевыми кадрами - 22 да еще и с тройными B-кадрами с виду вроде MPEG1 но какой то странный, я говорю о том что в h264 расстояние будет где то 250 если не более, да и P B будут практически пустыми ибо статичный контент.

froggy
()
Ответ на: комментарий от redgremlin

16bit*44100Hz*2ch = 1411200 bit/s

а почему в источнике 131k?

непонятно. как-то можно получить flac с тем же битрейтом?

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

а почему в источнике 131k?

Потому что в источнике используется кодирование с потерями.

как-то можно получить flac с тем же битрейтом?

Ресемплинг в 8bit, 22050Hz, mono. Иначе никак.

redgremlin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.