¿Cómo tomar el nombre del archivo de yt-dlp y usarlo como nombre del archivo de salida de ffmpeg?

¿Cómo tomar el nombre del archivo de yt-dlp y usarlo como nombre del archivo de salida de ffmpeg?

Estoy intentando que el nombre de salida sea el mismo que el nombre de entrada mientras uso el comando pipe en ffmpeg.

Ejemplo:

El archivo se llama 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].m4a. Estoy tratando de conseguir elNombre del archivo de salidaserautomáticamentelo mismo que elnombre del archivo de entradapero con la .mp3extensión.

Por lo que el nombre final debería ser 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3sin tener que escribirlo manualmente.

Ejemplo:

yt-dlp -o - -f 139 --external-downloader aria2c --external-downloader-args '-d ./ -x 10' https://www.youtube.com/watch?v=2ZrWHtvSog4 | ffmpeg -i pipe: -codec:a libmp3lame -b:a 8000 -ac 1 -ar 8000 test_audio.mp3

Estos comandos crean un archivo llamado test_audio.mp3Estoy intentando que sea 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3sin tener que escribirlo.

No estoy seguro de cómo canalizar/obtener la variable de nombre de archivo del archivo de entrada al archivo de salida de ffmpeg.

Mis pensamientos fueron:

  1. Obtenga el nombre del archivo de yt-dlp y colóquelo en una variable.
  2. Utilice esa variable como nombre del archivo de salida con ffmpeg

Respuesta1

Esto es lo que funcionó para mí.

yt-dlp -o - -f 139 --external-downloader aria2c --external-downloader-args '-d ./ -x 10' https://www.youtube.com/watch?v=2ZrWHtvSog4 | ffmpeg -i pipe: -codec:a libmp3lame -b:a 8000 -ac 1 -ar 8000 -f mp3 "$(basename "$(yt-dlp -e https://www.youtube.com/watch?v=2ZrWHtvSog4 | sed 's/[\/:*?"<>|]/_/g')").mp3"

Explicación:

El comando basename se utiliza para extraer el nombre base de la URL. Recupera el título del vídeo usando yt-dlp -ehttps://www.youtube.com/watch?v=2ZrWHtvSog4y luego reemplaza los caracteres que no están permitidos en los nombres de archivos con guiones bajos usando sed 's/[/:*?"<>|]/_/g'.

La sintaxis $(...) se usa para ejecutar un comando y usar su salida como parte de un comando más grande.

$(nombre base "$(yt-dlp -ehttps://www.youtube.com/watch?v=2ZrWHtvSog4| sed 's/[/:*?"<>|]/_/g')").mp3 es el nombre del archivo resultante con la extensión .mp3 agregada.

información relacionada