ffmpeg를 사용하여 mp3 파일을 자동으로 연결하기 위해 다음 bash 스크립트를 구성했습니다.
i=0
for f in "${@:2}"
do
filter+="[$i:a:0]"
i=`expr $i + 1`
files+="-i $f "
done
filter+="concat=n=$i:v=0:a=1[outa]"
ffmpeg $files -filter_complex $filter -map '[outa]' "$1.mp3"
그러나 파일 이름에 공백이있는 파일을 처리해야하는 경우가 많지만 터미널로 끌면 모든 공백이 이스케이프되어 다음 명령 호출이 생성됩니다.
./mergemp3.sh outfilename /path/to/my\ file\ with\ spaces.mp3 /path/to/another\ file\ with\ spaces.mp3
나에게 맞는 것 같습니다. 그러나 ffmpeg는 다음과 함께 실패합니다.
/path/to/my: No such file or directory
따라서 분명히 ffmpeg는 파일 이름의 공백을 이해하지 못하지만 백 슬래시로 올바르게 이스케이프됩니다. 그 파일 이름 목록과 관련하여 멋진 세부 사항이 진행되고 있다고 생각합니다. 어떤 아이디어?
명령 줄을 작성할 때 명확성과 안전을 위해 어레이는 친구와 같습니다.
files=()
i=0
for f in "${@:2}"
do
filter+="[$((i++)):a:0]"
files+=(-i "$f")
done
filter+="concat=n=$i:v=0:a=1[outa]"
ffmpeg "${files[@]}" -filter_complex "$filter" -map '[outa]' "$1.mp3"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다