대용량 mp3 파일이 있는데, 이를 여러 시점의 480개 mp3 파일로 분할하고 싶습니다. 하나씩 분할하는 것 외에 쉽게 수행할 수 있는 방법이 있는지 궁금합니다. 텍스트 파일에 서로 다른 분할 시간을 제공하고 FFmpeg에서 하나의 명령만 실행할 수 있습니까?
답변1
이 스크립트를 사용하세요
#! /bin/bash
x="00:00:00"
z=0
filename=$(basename -- "$2")
ext="${filename##*.}"
filename="${filename%.*}"
initcmd="ffmpeg -nostdin -hide_banner -loglevel error -i $2"
while read y
do
initcmd+=" -ss $x -to $y -c copy $filename$z.$ext"
let "z=z+1"
x=$y
done < $1
$initcmd
실행 가능하게 만들어라chmod +x
타임스탬프를 공백으로 구분하여 이와 같이 시간 프로필을 만드세요.
00:02:30
00:05:40
마지막 항목을 입력한 후 Enter를 누르는 것을 잊지 마세요.
그러면 구문은 다음과 같습니다.
./splitter.sh ./time ./Big_Buck_Bunny.mp4
1.mp4
두 파일 의 합을 생성합니다 2.mp4
. 첫 번째 파일은 00:00:00부터 00:02:30까지이고 두 번째 파일은 00:02:30부터 00:05:40까지입니다. 출력에 파일을 유지하려면 이 명령을 실행하십시오.
ffprobe -v error -show_entries format=duration -sexagesimal -of default=noprint_wrappers=1:nokey=1 Big_Buck_Bunny.mp4 >> ./time
(파일 길이를 가져와서 시간 구성에 추가합니다.)
설명하다
2행 : 초기 시작 시간 설정
3행 : 출력 파일 이름 번호 설정
4, 5, 6행 : 확장자 설정 (from그래서 포스팅은)
7행: 초기 매개변수가 있는 문자열
while 루프: 한 줄씩 읽습니다.그래서)
ffmpeg 라인: -nostdin
ffmpeg가 첫 번째 문자를 먹는 것을 방지합니다
-hide_banner -loglevel panic
. ffmpeg 메시지 억제
-i
입력 파일
이름 설정 initcmd+= 라인: 출력 이름 및 매개변수 추가
-ss
시작 시간
-to
종료 시간
-c copy
입력과 동일한 코덱을 사용하고 품질 손실이 없으며 속도가 가장 빠릅니다.
10행: 파일 이름 번호를 늘립니다(우분투에 물어보세요포스트)
11행 : 새로운 시작점 설정
편집하다:
답변2
당신은 그것을 사용할 수 있습니다무손실 편집그러나 그것은 GUI 응용 프로그램입니다. 여러 출력 파일을 한 번에 내보낼 수 있습니다.