Estou tentando baixar um clipe de um vídeo do YouTube e segui o caminho das ferramentas de linha de comando depois que descobri que os sites não são adequados para essa tarefa.
Graças a istoTópico AskUbuntu, eu tenho o seguinte 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
No entanto, depois de executá-lo com ffmpeg
e youtube-dl
no mesmo diretório, e cmd executando no mesmo diretório, recebo esta saída:
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 por este erro:
Unrecognized option '-get-url'.
Error splitting the argument list: Option not found
Não consegui entender a mensagem de erro e a pesquisa pelo erro também não me deu nenhuma resposta. O que poderia estar errado com o comando?
Responder1
Não consegui entender a mensagem de erro e a pesquisa pelo erro também não me deu nenhuma resposta. O que poderia estar errado com o comando?
ffmpeg
está tentando analisar a --get-url
opção destinada a youtube-dl
.
Explicação
A youtube-dl
parte incorporada no ffmpeg
comando ex.:
$(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4)
destina-se a:
Execute o
youtube-dl
comando (que retorna uma URL necessária para acessar o vídeo do YouTube).Substitua os resultados (ou seja, o URL do vídeo retornado) no ponto especificado do
ffmpeg
comando.
Seu problema parece ser que a $()
sintaxe não está sendo usada para obter/substituir o URL correto. O mesmo ffmpeg
ocorre com a leitura do comando bruto youtube-dl
e a tentativa de analisar youtube-dl
opções que não foram destinadas a ele.
Uma possível solução
Uma coisa a ter em conta é que isso $()
não faz parte do ffmpeg
. Ou seja, ffmpeg
não é o que está executando youtube-dl
ou substituindo os resultados.
No caso do Linux, qualquer shell que o Linux esteja usando faz a execução e a substituição antes de passar as coisas para o ffmpeg
.
Não está claro para mim qual sistema operacional você está usando, mas percebi que você fez uma referência a "cmd" em sua postagem original. Se você estiver no Windows, cmd
(o prompt de comando nativo do Windows) não oferece suporte ao uso de $()
. Em vez disso, você deve tentar seu comando com 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 caminho
Observe que o uso da powershell
opção acima "no estado em que se encontra" pressupõe que ffmpeg
e youtube-dl
estão disponíveis em todo o sistema (ou seja, as pastas nas quais residem seus respectivos executáveis fazem parte das configurações do caminho do Windows).
Se você deseja adicionar essas pastas ao seu caminho,você pode encontrar um tutorial rápido sobre como fazer isso aqui. Apenas certifique-se de adicioná-los às variáveis do sistema. Além disso, como observação lateral, você deve reiniciar o Windows Explorer antes de tentar usar ou ffmpeg
( youtube-dl
isso geralmente é feito com uma reinicialização).
Se você não deseja disponibilizar ffmpeg
em youtube-dl
todo o sistema, você pode modificar o powershell
comando acima com os respectivos caminhos para ffmpeg.exe
e youtube-dl.exe
. Por exemplo, para usar tudo na mesma pasta, você pode adicionar .\
antes do nome de cada executável:
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