ffmpeg를 사용하여 여러 비디오를 일괄 다운로드하려고 합니다. 사이트 주소 및 저장 이름 목록은 다음 형식의 텍스트 파일에 저장됩니다.
"site",filename.mp4
내 코드가 파일을 반복하면서 한 줄씩 다운로드하려고 합니다.
#!/bin/bash
while IFS=, read dl nm
do
echo $dl
echo $nm
/usr/bin/ffmpeg -loglevel error -protocol_whitelist file,http,https,tcp,tls,crypto -i $dl -c copy $nm
done < $1
예상되는 출력은 각 루프에서 ffmpeg가 각 줄에 표시된 파일을 다운로드한 후 루프의 다음 반복을 계속하는 것입니다.
대신 ffmpeg는 오류 메시지를 인쇄합니다.
"site": No such file or directory
터미널에서 동일한 명령을 직접 실행하고 사이트 이름과 저장 이름을 명령에 직접 삽입하면 제대로 작동합니다.
이 내용과 관련이 있을 것 같은 다른 글을 보다가 첨부해 보았습니다.
< /dev/null
ffmpeg 호출이 끝날 때까지 실행되지만 여전히 동일한 효과가 있습니다.
답변1
파일의 다운로드 URL/위치에 따옴표를 사용하고 있기 때문에 스크립트에 문제가 있습니다.
즉, 원하는 대로 파일이 있을 때 $nm`은 $dl
여전히 "site" and
예상한 대로 작동합니다.
이렇게 하려면 사이트 다운로드 위치에 따옴표가 없도록 파일을 변경한 다음 $dl
스크립트에서 따옴표를 설정해야 합니다.
그래서 당신은 다음과 같이 끝납니다 :
입력 파일 목록:
site,foobar.baz
스크립트:
#!/bin/bash
while IFS=, read dl nm
do
echo $dl
echo $nm
/usr/bin/ffmpeg -loglevel error -protocol_whitelist file,http,https,tcp,tls,crypto -i "$dl" -c copy $nm
done < $1
파일 이름에 공백이 포함된 경우 따옴표로 묶을 수도 있지만 $nm
결정은 사용자의 몫입니다.