yt-dlp에서 파일 이름을 가져와 ffmpeg 출력 파일 이름으로 사용하는 방법은 무엇입니까?

yt-dlp에서 파일 이름을 가져와 ffmpeg 출력 파일 이름으로 사용하는 방법은 무엇입니까?

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.mp3I'm try to get it to be 라는 파일을 생성합니다 .1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3

입력 파일에서 ffmpeg의 출력 파일로 파일 이름 변수를 파이프/가져오는 방법을 잘 모르겠습니다.

내 생각은 다음과 같습니다.

  1. yt-dlp에서 파일 이름을 가져와 변수에 넣습니다.
  2. 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 확장자가 추가된 결과 파일 이름입니다.

관련 정보