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


34

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

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

이 명령으로 가지고있는 문제는 옵션에 01:43:46-t 의 지속 시간 (초)이 필요 하다는 것 입니다. 시작 / 중지 시간을 사용하여 오디오를 다듬고 싶습니다 (예 : 01:43:46 ~ 00 : 01 : 45.02) .

이것이 가능한가?


1
따라서 시작 시간과 지속 시간 대신 시작 및 중지 시간을 사용하여 오디오 파일의 섹션을 추출하고 싶습니까?

1
@Nasha 맞습니다. 글을 더 명확하게하기 위해 글을 편집하겠습니다.
user8547

1
이에 따라 귀하의 질문을 답변했습니다. 실제로 ffmpeg시작 시간과 지속 시간 외에는 아무것도 제공하지 않는 것 같습니다. 그리고 mplayer그렇지 않습니다.

답변:


45

는 FFmpeg은 새로운 옵션을 갖고있는 것 같아요 -to 에서 문서를 :

-to position ( 입력 / 출력 ) 출력
쓰기 또는 위치 에서 입력 읽기를 중지합니다 . position 은 지속 시간 사양이어야합니다 (ffmpeg-utils (1) 매뉴얼의 (ffmpeg-utils) 지속 시간 섹션 참조).

-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
Tx, 잘 작동합니다. copy부분을 제거하지 않으면 오디오 / 비디오가 동기화 되지 않았으므로 해당 부분을 ​​제거하고 추가 -async 1하면 매력처럼 작동합니다. 물론 재 인코딩이 필요하므로 copy동기화 문제 는 허용 하지만 동기화 문제 는 허용 하지 않는 명령이 향상 됩니다.
user8547

1
여러 간격을 가질 수 있으며 함께 결합됩니까? 즉ffmpeg -i file.mp3 -ss 10 -to 11 -ss 20 -to 21 -ss 30 -to 31 ....
Avner Barr

@AvnerBarr 이것이 FFmpeg로만 가능한지 모르겠지만 Mencoder로 가능하다는 것을 알고 있습니다. -to옵션을 사용하여 작동합니다 .ffmpeg -i mmm.mp4 -ss 00:04:04 -to 00:04:35 -c copy output1.mp4 && ffmpeg -i mmm.mp4 -ss 00:05:47 -to 00:06:05 -c copy output2.mp4 && mencoder -ovc copy -oac mp3lame -idx output1.mp4 output2.mp4 -o complete.mp4
user8547

1

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]은 모두 트랙의 시작부터 절대 타임 스탬프입니다.

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


명령이 다음 예와 비슷합니까? audiochop.sh input.mp3 00:01:30 00:01:50 output.mp3
user8547

그렇습니다.
Litch

이것은 실제로 전체 명령입니다 : ./audiochop.sh input.mp3 00:01:30 00:01:50 output.mp3 명령 앞에 마침표와 슬래시를 넣는 것을 잊어 버렸습니다. 일.
user8547 2019

또한이 PHP / bash 스크립트는 mp4 비디오에서도 작동하므로 모든 비디오 형식에서 작동한다고 가정합니다.
user8547

1
ffmpeg가 지원하는 형식으로 작동해야합니다.
Litch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.