Jak pobrać najlepsze wideo wraz z najlepszym kompatybilnym dźwiękiem z youtube-dl?

21

Chcę użyć selektora formatu, który jest -f bestvideo+best audio whose extension is compatible with the video extensiontaki, że nie muszą być zamultowane w mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.).

Uwaga: wiem o tym -f besti nie chcę tego. Chcę jak najlepszej jakości dźwięku i obrazu, jednocześnie zapewniając ich zgodność. Jak to zrobić?

Peaceful Coder
źródło
1
Być może to pytanie i odpowiedź będzie pomocne: askubuntu.com/q/806258/57576
andrew.46
@ andrew.46 Dziękujemy za próbę pomocy, ale link nie był zbyt pomocny. Opisuje scenariusz, gdy kierujesz reklamy na określony zestaw rozszerzeń. Podczas gdy w moim przypadku jestem elastyczny z moimi rozszerzeniami - chcę tylko, żeby były kompatybilne. Na przykład plik webmwideo i opusplik audio, których wynikiem jest .webmplik, są dla mnie całkowicie w porządku.
The Peaceful Coder,

Odpowiedzi:

34

Możesz pobrać najlepsze wideo i audio, używając:

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

Jeśli pojawi się błąd, spróbuj wykonać następujące czynności:

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

Tutaj możesz pobrać najlepsze wideo i audio osobno, a następnie scalić w, w tym przypadku plik mp4. Możesz także zmienić format wyjściowy scalonego wideo.

Powodzenia!

Herman Karlsson
źródło
Dzięki! Ale już to wiem. Jak wyjaśniłem w moim komentarzu , nie chcę ograniczać mojego formatu wyboru do określonego. Tak więc użycie -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'może nie pobrać najlepszego filmu, jeśli ma webmrozszerzenie. W każdym razie +1 za próbę pomocy.
The Peaceful Coder,
! ffmpeg powinno być zainstalowane dla tej opcji
babygame0ver
6

stare pytanie, ale pierwsza odpowiedź w Google, więc:

ze zdefiniowaniem następującej funkcji, zadziałało dla mnie (można ją również umieścić ~/.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
}

teraz możesz pobrać za pomocą

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

źródło: opracowanie własne

nikt
źródło
2
Zauważ, że nazwa funkcji nie jest poprawna technicznie, w szczególności myślniki i znak plus. Możesz więc mieć problemy z korzystaniem z funkcji, zwłaszcza z eksportowaniem. Poleciłbym przerobić to na skrypt (ponieważ nie musi to być funkcja) i zmienić nazwę na coś podobnego youtube-dl_video_and_audio_best_no_mkv_merge.
wjandrea
@wjandrea: Myślniki w nazwach funkcji powłoki są poprawne (tak jak w przypadku poleceń). Nie wiem jednak o eksportowanych funkcjach.
David Foerster
@DavidFoerster Tak, Bash akceptuje nieprawidłowe nazwy funkcji, ale nie może ich eksportować. Jeśli spróbujesz, pojawi się błądnot a valid identifier
wjandrea