
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 .mp3
extensión.
Por lo que el nombre final debería ser 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3
sin 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.mp3
Estoy intentando que sea 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3
sin 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:
- Obtenga el nombre del archivo de yt-dlp y colóquelo en una variable.
- 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.