Wie lade ich das beste Video zusammen mit dem besten kompatiblen Audio mit youtube-dl herunter?

17

Ich möchte -f bestvideo+best audio whose extension is compatible with the video extensioneinen Formatwähler verwenden , der so ähnlich ist , dass sie nicht in ein mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.) gemuxt werden müssen .

Hinweis: Ich weiß davon -f bestund ich will das nicht. Ich möchte die bestmöglichen Audio- und Videoqualitäten und gleichzeitig sicherstellen, dass sie kompatibel sind. Wie geht das?

Der friedliche Kodierer
quelle
1
Vielleicht wäre diese Frage und Antwort hilfreich: askubuntu.com/q/806258/57576
andrew.46
@ andrew.46 Danke, dass du versucht hast zu helfen, aber der Link war keine große Hilfe. Es beschreibt das Szenario, wenn Sie auf einen bestimmten Erweiterungssatz abzielen. Während ich in meinem Fall flexibel mit meinen Erweiterungen bin, möchte ich nur, dass sie kompatibel sind. Zum Beispiel sind eine webmVideo- und eine opusAudiodatei, die zu einer .webmDatei führen, für mich vollkommen in Ordnung.
Der friedliche Kodierer

Antworten:

30

Sie können das beste Video und Audio herunterladen, indem Sie Folgendes verwenden:

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

Wenn dies zu einem Fehler führt, versuchen Sie stattdessen Folgendes:

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

Hier laden Sie das beste Video und Audio separat herunter und fügen es dann in eine, in diesem Fall mp4-Datei, ein. Sie können das Ausgabeformat auch für das zusammengeführte Video ändern.

Viel Glück!

Herman Karlsson
quelle
Vielen Dank! Aber das weiß ich schon. Wie ich in meinem Kommentar erklärt habe , möchte ich mein Auswahlformat nicht auf ein bestimmtes beschränken. -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'Wenn Sie die webmErweiterung verwenden , wird möglicherweise nicht das beste Video heruntergeladen . Wie auch immer, +1 für den Versuch zu helfen.
Der friedliche Kodierer
6

alte Frage, aber erste Antwort auf Google, also:

Mit der Definition der folgenden Funktion hat es bei mir funktioniert (auch möglich, sie zu platzieren ~/.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
}

Jetzt können Sie mit herunterladen

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

Quelle: eigene Schöpfung

Niemand
quelle
2
Beachten Sie, dass der Funktionsname technisch nicht gültig ist, insbesondere die Bindestriche und das Pluszeichen. Daher können Probleme bei der Verwendung der Funktion auftreten, insbesondere beim Exportieren. Ich würde empfehlen, dies in ein Skript umzuwandeln (da es keine Funktion sein muss) und den Namen in so etwas wie zu ändern youtube-dl_video_and_audio_best_no_mkv_merge.
Wjandrea
@wjandrea: Striche in Shell-Funktionsnamen sind gültig (wie für Befehle im Allgemeinen). Ich weiß jedoch nichts über exportierte Funktionen.
David Foerster
@DavidFoerster Ja, Bash akzeptiert ungültige Funktionsnamen, kann sie jedoch nicht exportieren. Wenn Sie versuchen, erhalten Sie eine Fehlermeldung,not a valid identifier
wjandrea