Estoy intentando descargar un clip de un vídeo de YouTube y seguí el camino de las herramientas de línea de comandos después de descubrir que los sitios web no están hechos para esta tarea.
Gracias a estoHilo AskUbuntu, tengo el siguiente comando:
ffmpeg -i $(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4
Sin embargo, después de ejecutarlo con ffmpeg
y youtube-dl
en el mismo directorio, y cmd ejecutándose en el mismo directorio, obtengo este resultado:
ffmpeg version git-2020-02-06-343ccfc Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20200122
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 39.100 / 56. 39.100
libavcodec 58. 68.100 / 58. 68.100
libavformat 58. 38.100 / 58. 38.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 74.100 / 7. 74.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Seguido de este error:
Unrecognized option '-get-url'.
Error splitting the argument list: Option not found
No pude entender el mensaje de error y buscar el error tampoco me dio ninguna respuesta. ¿Qué podría estar mal con el comando?
Respuesta1
No pude entender el mensaje de error y buscar el error tampoco me dio ninguna respuesta. ¿Qué podría estar mal con el comando?
ffmpeg
está intentando analizar la --get-url
opción destinada a youtube-dl
.
Explicación
La youtube-dl
parte incrustada en el ffmpeg
comando, por ejemplo:
$(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4)
se pretende:
Ejecute el
youtube-dl
comando (que devuelve una URL necesaria para acceder al video de YouTube).Sustituya los resultados (es decir, la URL del vídeo devuelta) en el punto indicado del
ffmpeg
comando.
Su problema parece ser que la $()
sintaxis no se utiliza para obtener/sustituir la URL correcta. También lo ffmpeg
es leer el youtube-dl
comando sin formato e intentar analizar youtube-dl
opciones que no estaban destinadas a ello.
Una posible solución
Una cosa a tener en cuenta es que eso $()
no forma parte de ffmpeg
. Es decir, ffmpeg
no es lo que está ejecutando youtube-dl
ni sustituyendo los resultados.
En el caso de Linux, cualquier shell que utilice Linux realiza la ejecución y sustitución antes de pasar las cosas a ffmpeg
.
No tengo claro qué sistema operativo estás usando, pero noto que haces una referencia a "cmd" en tu publicación original. Si está en Windows, cmd
(el símbolo del sistema nativo de Windows) no admite el uso de $()
. En su lugar, deberías probar tu comando con powershell
:
powershell ffmpeg -i $(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4
Notas de ruta
Tenga en cuenta que el uso de la powershell
opción anterior "tal cual" supone que ffmpeg
están youtube-dl
disponibles en todo el sistema (es decir, las carpetas en las que residen sus respectivos ejecutables son parte de la configuración de la ruta de Windows).
Si desea agregar estas carpetas a su Ruta,Puedes encontrar un tutorial rápido sobre cómo hacerlo aquí.. Solo asegúrese de agregarlos a las variables de su sistema. Además, como nota al margen, debe reiniciar el Explorador de Windows antes de intentar utilizar o ffmpeg
( youtube-dl
esto suele hacerse reiniciando).
Si no desea que esté ffmpeg
disponible youtube-dl
en todo el sistema, puede modificar el powershell
comando anterior con las rutas respectivas a ffmpeg.exe
y youtube-dl.exe
. Por ejemplo, para usar todo lo que está en la misma carpeta, puedes agregar .\
delante de cada nombre ejecutable:
powershell .\ffmpeg -i $(.\youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4