큰 오디오 파일을 길이가 다양한 트랙 세트로 나누려면 다음 명령을 사용할 수 있습니다.
# -to is the end time of the sub-file
ffmpeg -i BIG_FILE -acodec copy -ss START_TIME -to END_TIME LITTLE_FILE
예를 들어, 시작, 종료, 이름이 포함 된이 텍스트 파일을 사용하여 Inception Original Soundtrack의 단일 .opus 파일을 하위 파일로 분할했습니다.
00:00:00 00:01:11 01_half_remembered_dream
00:01:11 00:03:07 02_we_built_our_own_world
00:03:07 00:05:31 03_dream_is_collapsing
00:05:31 00:09:14 04_radical_notion
00:09:14 00:16:58 05_old_souls
00:16:58 00:19:22 06
00:19:22 00:24:16 07_mombasa
00:24:16 00:26:44 08_one_simple_idea
00:26:44 00:31:49 09_dream_within_a_dream
00:31:49 00:41:19 10_waiting_for_a_train
00:41:19 00:44:44 11_paradox
00:44:44 00:49:20 12_time
이 짧은 awk
프로그램을 작성하여 텍스트 파일을 읽고 ffmpeg
각 줄에서 명령을 작성했습니다 .
{
# make ffmpeg command string using sprintf
cmd = sprintf("ffmpeg -i inception_ost.opus -acodec copy -ss %s -to %s %s.opus", $1, $2, $3)
# execute ffmpeg command with awk's system function
system(cmd)
}
다음은 python
라는 프로그램 의보다 자세한 버전입니다 split.py
. 이제 원본 트랙 파일 과 하위 트랙을 지정하는 텍스트 파일을 명령 줄에서 읽습니다.
import subprocess
import sys
def main():
"""split a music track into specified sub-tracks by calling ffmpeg from the shell"""
# check command line for original file and track list file
if len(sys.argv) != 3:
print 'usage: split <original_track> <track_list>'
exit(1)
# record command line args
original_track = sys.argv[1]
track_list = sys.argv[2]
# create a template of the ffmpeg call in advance
cmd_string = 'ffmpeg -i {tr} -acodec copy -ss {st} -to {en} {nm}.opus'
# read each line of the track list and split into start, end, name
with open(track_list, 'r') as f:
for line in f:
# skip comment and empty lines
if line.startswith('#') or len(line) <= 1:
continue
# create command string for a given track
start, end, name = line.strip().split()
command = cmd_string.format(tr=original_track, st=start, en=end, nm=name)
# use subprocess to execute the command in the shell
subprocess.call(command, shell=True)
return None
if __name__ == '__main__':
main()
ffmpeg
명령 템플릿을 수정하거나 track_list 파일의 각 줄에 더 많은 필드를 추가하여 점점 더 복잡한 호출을 쉽게 구축 할 수 있습니다 .