Як завантажити найкраще відео разом із найкращим сумісним аудіо з youtube-dl?


21

Я хочу використовувати селектор формату, який є на зразок -f bestvideo+best audio whose extension is compatible with the video extensionтакого, щоб їх не потрібно було змішувати в mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.).

Примітка. Я знаю про це, -f bestі цього не хочу. Я хочу найкращих якостей як аудіо, так і відео, забезпечуючи сумісність. Як це зробити?


1
Можливо, це питання та відповідь будуть корисними: askubuntu.com/q/806258/57576
andrew.46

@ andrew.46 Дякую за спробу допомогти, але посилання не дуже допомогло. Він описує сценарій, коли ви орієнтуєтесь на певний набір розширень. Тоді як у моєму випадку я гнучка у своїх розширеннях - просто хочу, щоб вони були сумісні. Наприклад, webmвідео та opusаудіофайл, у результаті якого .webmфайл є для мене абсолютно нормальним.
Мирний кодер

Відповіді:


34

Ви можете завантажити найкраще відео та аудіо за допомогою:

youtube-dl -f bestvideo+bestaudio "link to youtube video"

Якщо це дає помилку, спробуйте скористатися наступним:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 "link to youtube video"

Тут ви завантажуєте найкраще відео та аудіо окремо, а потім об'єднуєтесь у файл mp4, у цьому випадку. Ви також можете змінити вихідний формат на об'єднаному відео.

Удачі!


Дякую! Але я це вже знаю. Як я пояснив у коментарі , я не хочу обмежувати свій формат вибору лише певним. Таким чином, використання -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'може не завантажувати найкраще відео, якщо воно має webmрозширення. У будь-якому разі +1 за спробу допомогти.
Мирний кодер

! Для цієї опції слід встановити ffmpeg
babygame0ver

6

старе запитання, але перша відповідь на Google, так що:

з визначенням наступної функції, вона працювала для мене (також можливо розмістити її ~/.bashrc):

youtube-dl_video_and_audio_best_no_mkv_merge () {
  video_type=$(youtube-dl -F "$@" | grep "video only" | awk '{print $2}' | tail -n 1)
  case $video_type in
    mp4)
      youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' "$@";;
    webm)
      youtube-dl -f 'bestvideo[ext=webm]+bestaudio[ext=webm]' "$@";;
    *)
      echo "new best videoformat detected, please check it out! -> aborted";;
  esac
}

тепер ви можете завантажити з

youtube-dl_video_and_audio_best_no_mkv_merge "https://www.youtube.com/watch?v=*******" "https://https://www.youtube.com/watch?v=********"

джерело: власне творіння


2
Зверніть увагу, що назва функції технічно не відповідає дійсності, зокрема, тире та знак плюс. Тож у вас можуть виникнути проблеми з використанням функції, особливо з її експортом. Я рекомендую зробити це в сценарій (оскільки це не потрібно бути функцією) і змінити ім'я на щось подібне youtube-dl_video_and_audio_best_no_mkv_merge.
wjandrea

@wjandrea: тире в назвах функцій оболонки є дійсними (як і для команд загалом). Я не знаю про експортовані функції.
Девід Фоерстер

@DavidFoerster Так, Bash приймає недійсні імена функцій, але не може їх експортувати. Якщо ви спробуєте, ви отримаєте помилку,not a valid identifier
wjandrea
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.