it-swarm.com.de

Trimmen Sie die Audiodatei mithilfe der Start- und Stoppzeiten

Ich habe einen FFmpeg-Befehl zum Trimmen von Audio:

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

Das Problem, das ich mit diesem Befehl habe, ist die Option -t benötigt eine Dauer (in Sekunden) von 1:43:46. Ich möchte Audio mithilfe von Start-/Stoppzeiten trimmen, z. zwischen 1:43:46 und : 01: 45.02.

Ist das möglich?

38
user8547

ffmpeg scheint eine neue Option - to in der Dokumentation zu haben:

- bis Position ( Eingabe/ Ausgabe)
Hören Sie auf, die Ausgabe zu schreiben oder die Eingabe an Position zu lesen. position muss eine Zeitdauerspezifikation sein, siehe (ffmpeg-utils) den Abschnitt Zeitdauer im Handbuch ffmpeg-utils (1).

-to und -t schließen sich gegenseitig aus und -t hat Priorität.

Beispielbefehl mit zwei Zeitformaten

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

Dies sollte eine Kopie (file-2.mkv) von file.mkv von der 20-Sekunden-Marke bis zur 40-Sekunden-Marke erstellen.

57
Miati

Wenn Sie PHP installiert haben, machen Sie es zu einem Skript:

Inhalt von 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 Inhalt:

#!/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"

Verwendungszweck:

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

Wobei [Startchop] und [Stopchop] beide absolute Zeitstempel vom Anfang des Tracks sind.

NB: Abhängig von der Plattformversion usw. müssen die Skripte möglicherweise angepasst werden.

0
Litch