使用开始和停止时间修剪音频文件


34

我有一个FFmpeg命令来修剪音频:

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

我对此命令的问题是该选项-t需要从01:43:46开始的持续时间(以秒为单位)。我想使用开始/停止时间来修剪音频,例如在01:43:4600:01:45.02之间

这可能吗?


1
因此,您想使用开始时间和停止时间而不是开始时间和持续时间来提取音频文件的一部分,对吗?

1
@Nasha是的。我将编辑该帖子以使其更加清晰。
user8547

1
我已经相应地改写了你的问题。实际上ffmpeg,除了开始时间和持续时间外,似乎没有提供任何其他功能。而且mplayer也不是。

Answers:


45

ffmpeg 在文档中似乎有一个新选项-to

-to 位置输入 / 输出
位置停止写入输出或读取输入。position 必须是持续时间规范,请参阅(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
Tx,效果很好。我发现,如果不删除copy音频/视频不同步的部分,那么我将其删除并添加-async 1,它的工作原理就像一种魅力。当然,它需要重新编码,因此对命令的改进将允许copy但不存在同步问题。
2013年

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 '18

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
2015年

是的,就是这样。
里奇

这实际上是完整的命令:./audiochop.sh input.mp3 00:01:30 00:01:50 output.mp3我忘了在命令前加上句号和斜杠,这就是为什么它不是工作。
2015年

顺便说一句,我发现此php / bash脚本也可以在mp4视频上使用,因此我认为它可以与任何视频格式一起使用。
user8547

1
它应该与ffmpeg支持的任何格式一起工作。
里奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.