시작 및 중지 시간을 사용하여 오디오 파일 다듬기

시작 및 중지 시간을 사용하여 오디오 파일 다듬기

오디오를 다듬는 FFmpeg 명령이 있습니다.

ffmpeg -ss 01:43:46 -t 00:00:44.30 -i input.mp3 output.mp3

이 명령의 문제점은 옵션 -t에 초 단위의 기간이 필요하다는 것입니다.01:43:46. 예를 들어 시작/중지 시간을 사용하여 오디오를 다듬고 싶습니다.01:43:46그리고00:01:45.02.

가능합니까?

답변1

ffmpeg에 대한 새로운 대안이 있는 것 같습니다.-도착하다존재하다문서:

-도착하다 위치(입력하다/산출)
출력 쓰기 또는 입력 읽기를 중지합니다.위치.위치 기간 사양이어야 합니다. 참조(ffmpeg-utils) ffmpeg-utils(1) 매뉴얼의 기간 섹션입니다.

-to와 -t는 상호 배타적이며 -t가 우선 적용됩니다.

두 가지 시간 형식을 사용한 명령 예

ffmpeg -i file.mkv -ss 20 -to 40 -c copy file-2.mkv
ffmpeg -i file.mkv -ss 00:00:20 -to 00:00:40 -c copy file-2.mkv

이렇게 하면 20초 표시부터 40초 표시까지 file.mkv의 복사본이 생성됩니다(file-2.mkv).

답변2

PHP가 설치되어 있으면 스크립트로 만드십시오.

TimeDiff.php 콘텐츠:

<?php
// Create datetime objcects
$dt1 = new DateTime($argv[1]);
$dt2 = new DateTime($argv[2]);

// Conver difference to seconds
$dt3 = $dt2->format('U') - $dt1->format('U');

// echo $dt3."\n";
$h = (int)($dt3 / 3600);
$dt3 %= 3600;
$m = (int)($dt3 / 60);
$dt3 %= 60;
$s = $dt3;

// Dump as H:M:S
echo $h . ":" . $m . ":" . $s;

?>

audiochop.sh 콘텐츠:

#!/bin/bash
INFILE=$1
START=$2
STOP=$3
OUTFILE=$4

OFFSET=`php TimeDiff.php "$START" "$STOP"`

echo "Disecting $INFILE starting from $START to $STOP (duration $OFFSET)"
ffmpeg -ss "$START" -t "$OFFSET" -i "$INFILE" "$OUTFILE"

용법:

./audiochop.sh [input.mp3] [startchop] [stopchop] [output.mp3]

여기서 [startchop] 및 [stopchop]은 모두 트랙 시작 부분의 절대 타임스탬프입니다.

참고: 플랫폼 버전 등에 따라 스크립트를 조정해야 할 수도 있습니다.

관련 정보