
ffmpeg에서 파이프 명령을 사용하는 동안 출력 이름을 입력 이름과 동일하게 만들려고 합니다.
예:
파일 이름은 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].m4a
. 나는 그것을 얻으려고 노력하고있다.출력 파일 이름장차 ~ 가 되는자동으로와 동일입력 파일 이름하지만 확장 기능 이 있습니다 .mp3
.
따라서 최종 이름은 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3
수동으로 입력할 필요가 없는 이름이어야 합니다.
예:
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
이 명령은 입력하지 않고도 test_audio.mp3
I'm try to get it to be 라는 파일을 생성합니다 .1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3
입력 파일에서 ffmpeg의 출력 파일로 파일 이름 변수를 파이프/가져오는 방법을 잘 모르겠습니다.
내 생각은 다음과 같습니다.
- yt-dlp에서 파일 이름을 가져와 변수에 넣습니다.
- ffmpeg를 사용하여 해당 변수를 출력 파일 이름으로 사용하십시오.
답변1
나에게 도움이 된 것은 다음과 같습니다.
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"
설명:
basename 명령은 URL에서 기본 이름을 추출하는 데 사용됩니다. yt-dlp -e를 사용하여 동영상 제목을 검색합니다.https://www.youtube.com/watch?v=2ZrWHtvSog4그런 다음 sed 's/[/:*?"<>|]/_/g'를 사용하여 파일 이름에 허용되지 않는 모든 문자를 밑줄로 바꿉니다.
$(...) 구문은 명령을 실행하고 해당 출력을 더 큰 명령의 일부로 사용하는 데 사용됩니다.
$(기본 이름 "$(yt-dlp -ehttps://www.youtube.com/watch?v=2ZrWHtvSog4| sed 's/[/:*?"<>|]/_/g')").mp3는 .mp3 확장자가 추가된 결과 파일 이름입니다.