裁剪 MP3 到最后 N 秒
Crop MP3 to last N seconds
我想从现有的 MP3 文件生成一个新的(完全有效的)MP3 文件。新文件应仅包含曲目的最后 N 秒。
avconv
中有 -t
选项用于获取前 N 秒:
-t duration (output)
Stop writing the output after its duration reaches duration. duration may be a number in seconds, or in "hh:mm:ss[.xxx]" form.
是否有裁剪最后 N 秒的选项? avconv
对我来说不是必需的,所有其他工具都可以接受。
如果你想发布脚本,你应该检查以确保安装了 mp3info,以及参数计数等,但这应该让你开始。将其保存为 .sh 并使用 mp3lastnsecs.sh input.mp3 output.mp3 numsecs
调用它
此外,您还需要添加其他 ffmpeg 标志以用于标记、比特率等。
#!/usr/bin/bash
SECS=$(mp3info -p "%S" )
if [ "$SECS" -ge "" ]; then
START=$((SECS-))
else
echo 'Error: requested length is longer than the song.'
exit 1
fi
#echo Starting song from $START seconds.
ffmpeg -i "" -ss $START ""
示例输出:
[ @ tmp] ./lastN.sh 01-glaube.mp3 output.mp3 20
Starting song 01-glaube.mp3 from 96 seconds.
ffmpeg -i 01-glaube.mp3 -ss 96 output.mp3 # I had an echo in there for testing, it now calls ffmpeg directly
[ @ tmp] ./lastN.sh 01-glaube.mp3 output.mp3 1234
Error: requested length is longer than the song.
您可以简单地使用 ffprobe
来获取音频的持续时间。
ffprobe -i input_audio -show_entries format=duration -v quiet -of csv="p=0"
计算nth_second并与ffmpeg
一起使用
ffmpeg -i input_audio -ss nth_second output_file
以下是该过程的 shell 脚本。
#!/bin/bash
duration=$(ffprobe -i -show_entries format=duration -v quiet -of csv="p=0")
nth_second=$(echo "${duration} - "|bc)
ffmpeg -i -ss ${nth_second}
我想从现有的 MP3 文件生成一个新的(完全有效的)MP3 文件。新文件应仅包含曲目的最后 N 秒。
avconv
中有 -t
选项用于获取前 N 秒:
-t duration (output)
Stop writing the output after its duration reaches duration. duration may be a number in seconds, or in "hh:mm:ss[.xxx]" form.
是否有裁剪最后 N 秒的选项? avconv
对我来说不是必需的,所有其他工具都可以接受。
如果你想发布脚本,你应该检查以确保安装了 mp3info,以及参数计数等,但这应该让你开始。将其保存为 .sh 并使用 mp3lastnsecs.sh input.mp3 output.mp3 numsecs
此外,您还需要添加其他 ffmpeg 标志以用于标记、比特率等。
#!/usr/bin/bash
SECS=$(mp3info -p "%S" )
if [ "$SECS" -ge "" ]; then
START=$((SECS-))
else
echo 'Error: requested length is longer than the song.'
exit 1
fi
#echo Starting song from $START seconds.
ffmpeg -i "" -ss $START ""
示例输出:
[ @ tmp] ./lastN.sh 01-glaube.mp3 output.mp3 20
Starting song 01-glaube.mp3 from 96 seconds.
ffmpeg -i 01-glaube.mp3 -ss 96 output.mp3 # I had an echo in there for testing, it now calls ffmpeg directly
[ @ tmp] ./lastN.sh 01-glaube.mp3 output.mp3 1234
Error: requested length is longer than the song.
您可以简单地使用 ffprobe
来获取音频的持续时间。
ffprobe -i input_audio -show_entries format=duration -v quiet -of csv="p=0"
计算nth_second并与ffmpeg
ffmpeg -i input_audio -ss nth_second output_file
以下是该过程的 shell 脚本。
#!/bin/bash
duration=$(ffprobe -i -show_entries format=duration -v quiet -of csv="p=0")
nth_second=$(echo "${duration} - "|bc)
ffmpeg -i -ss ${nth_second}