오디오를 다듬는 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]은 모두 트랙 시작 부분의 절대 타임스탬프입니다.
참고: 플랫폼 버전 등에 따라 스크립트를 조정해야 할 수도 있습니다.