6

Я не могу прослушать звук m4a DASH, загруженный с YouTube через youtube-dl на Winamp. Есть ли в youtube-dl возможность удалить аудио часть DASH файла m4a и загрузить / сохранить ее как m4a (AAC LC) без потери качества? До сих пор я использую ffmpeg -i input.m4a -vn -acodec copy output.m4a для преобразования каждого файла, чтобы он правильно воспроизводился в Winamp.

3 ответа3

6

Нет, вам нужен второй шаг преобразования.

Проблема заключается в том, что для YouTube DASH ftyp контейнера MP4 имеет "главную марку", установленную на dash вместо m4a . Это правильный подход для потоковой передачи DASH, но Winamp слишком стар, чтобы его распознавать (как и многие другие программы).

Теперь, что было бы разумным предложением, это создать запрос функции для youtube-dl, чтобы добавить поддержку пост-обработки для ffmpeg, чтобы преобразовать главную марку контейнера MP4 во что-то более совместимое. Но на данный момент такой вещи не существует.

Или подайте отчет об ошибке для Winamp, чтобы включить поддержку декодирования для брендов dash . Так как он, скорее всего, будет полагаться на сторонний плагин декодера, это, вероятно, также означает создание отчета об ошибке где-то еще.

4

youtube-dl 2015.01.23.4 и новее автоматически исправит заголовок файла m4a, если в системе присутствует ffmpeg.

Источник: youtube-dl: Файлы m4a Youtube, загруженные с помощью --extract-audio, не могут воспроизводиться на некоторых проигрывателях
Все, что вам нужно сделать, это добавить путь к каталогу, содержащему двоичный файл ffmpeg, в вашу системную переменную пути (как в Windows 7):

Или используйте аргумент командной строки --ffmpeg-location <path to ffmpeg binary or its containing directory> при вызове youtube-dl, чтобы разрешить youtube-dl через ffmpeg автоматически исправить это.

1

Я взял на себя смелость использовать вашу команду ffmpeg и вот что я получил: yt "My Youtube File.mp4"

Файл yt.bat помещенный в system32, содержащий:

@echo off
mv %1 "_%~n1"
ffmpeg -i "_%~n1" -vn -c:a copy "%~n1.m4a"
rm "_%~n1"

* автоматически переименовывается в m4a , который можно изменить в коде.

** он должен быть через временный файл и затем использовать rm, mv, в противном случае файл и имя файла будут повреждены.

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