FFmpeg를 사용하여 대용량 mp3 파일을 텍스트 파일에 제공된 서로 다른 시점의 여러 파일로 자동 분할

FFmpeg를 사용하여 대용량 mp3 파일을 텍스트 파일에 제공된 서로 다른 시점의 여러 파일로 자동 분할

대용량 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 라인: -nostdinffmpeg가 첫 번째 문자를 먹는 것을 방지합니다
-hide_banner -loglevel panic. ffmpeg 메시지 억제
-i입력 파일
이름 설정 initcmd+= 라인: 출력 이름 및 매개변수 추가 -ss시작 시간 -to종료 시간 -c copy입력과 동일한 코덱을 사용하고 품질 손실이 없으며 속도가 가장 빠릅니다.
10행: 파일 이름 번호를 늘립니다(우분투에 물어보세요포스트)
11행 : 새로운 시작점 설정

편집하다:

  1. 이제 줄로 구분된 파일을 읽을 수 있습니다.그래서
  2. ffmpeg를 반복적으로 호출하는 대신 마지막 줄의 모든 작업을 수행하세요.다중 출력

답변2

당신은 그것을 사용할 수 있습니다무손실 편집그러나 그것은 GUI 응용 프로그램입니다. 여러 출력 파일을 한 번에 내보낼 수 있습니다.

관련 정보