¿Cómo descargar el mejor video junto con el mejor audio compatible con youtube-dl?

19

Quiero usar un selector de formato que sea similar -f bestvideo+best audio whose extension is compatible with the video extensionpara que no necesiten ser muxed en un mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.).

Nota: Lo sé -f besty no quiero eso. Quiero las mejores cualidades posibles de audio y video al tiempo que me aseguro de que sean compatibles. ¿Como hacer eso?

El codificador pacífico
fuente
1
Quizás esta pregunta y respuesta sería útil: askubuntu.com/q/806258/57576
andrew.46
@ andrew.46 Gracias por intentar ayudar, pero el enlace no fue de mucha ayuda. Describe el escenario cuando se dirige a un conjunto de extensiones específico. Mientras que en mi caso, soy flexible con mis extensiones, solo quiero que sean compatibles. Por ejemplo, un webmvideo y un opusarchivo de audio, que resultan en un .webmarchivo, están perfectamente bien para mí.
The Peaceful Coder

Respuestas:

32

Puede descargar el mejor video y audio usando:

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

Si eso te da un error, prueba lo siguiente:

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

Aquí puede descargar el mejor video y audio por separado y luego combinarlo en un archivo mp4, en este caso. También puede cambiar el formato de salida en el video combinado.

¡Buena suerte!

Herman Karlsson
fuente
¡Gracias! Pero eso ya lo sé. Como expliqué en mi comentario , no quiero limitar mi formato de selección a uno en particular. Por lo tanto, el uso -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'puede no descargar el mejor video si es de la webmextensión. De todos modos, +1 por intentar ayudar.
The Peaceful Coder
6

vieja pregunta, pero la primera respuesta en google, entonces:

con la definición de la siguiente función, funcionó para mí (también es posible colocarlo ~/.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
}

ahora puedes descargar con

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

fuente: creación propia

Ninguno
fuente
2
Tenga en cuenta que el nombre de la función no es técnicamente válido, específicamente los guiones y el signo más. Por lo tanto, puede tener problemas para usar la función, especialmente exportarla. Recomendaría convertir esto en un script (ya que no necesita ser una función) y cambiar el nombre a algo así youtube-dl_video_and_audio_best_no_mkv_merge.
wjandrea
@wjandrea: los guiones en los nombres de funciones de shell son válidos (como lo son para los comandos en general). Sin embargo, no sé acerca de las funciones exportadas.
David Foerster
@DavidFoerster Sí, Bash acepta nombres de funciones no válidos, pero no puede exportarlos. Si lo intentas, obtienes un error,not a valid identifier
wjandrea