ffmpeg 静默_使用FFMPEG与silencedetect去除音频静音

I am trying to use the following command with the latest ffmpeg build to remove silence from my .mp3 files:

ffmpeg -i SILENCE.mp3 -af silencedetect=n=-50dB:d=1 -y -ab 192k SILENCE_OUT.mp3

However, the following output is produced:

ffmpeg version N-66154-g1654ca7 Copyright (c) 2000-2014 the FFmpeg developers

built on Sep 5 2014 22:10:38 with gcc 4.8.3 (GCC)

configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av

isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab

le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --

enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-lib

modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrw

b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge

r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en

able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis

--enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-

libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib

libavutil 54. 7.100 / 54. 7.100

libavcodec 56. 1.100 / 56. 1.100

libavformat 56. 4.100 / 56. 4.100

libavdevice 56. 0.100 / 56. 0.100

libavfilter 5. 1.100 / 5. 1.100

libswscale 3. 0.100 / 3. 0.100

libswresample 1. 1.100 / 1. 1.100

libpostproc 53. 0.100 / 53. 0.100

Input #0, mp3, from 'SILENCE.mp3':

Metadata:

title : Snowblind (Featuring Tasha Baxter)

artist : Au5

album : Snowblind (Featuring Tasha Baxter)

genre : Electronica

performer : Au5

track : 1/1

date : 2014

album_artist : Au5,Tasha Baxter

major_brand : mp42

minor_version : 0

compatible_brands: isommp42

encoder : Lavf55.42.100

Duration: 00:05:50.80, start: 0.025057, bitrate: 192 kb/s

Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 192 kb/s

Output #0, mp3, to 'SILENCE_OUT.mp3':

Metadata:

TIT2 : Snowblind (Featuring Tasha Baxter)

TPE1 : Au5

TALB : Snowblind (Featuring Tasha Baxter)

TCON : Electronica

TPE3 : Au5

TRCK : 1/1

TDRL : 2014

TPE2 : Au5,Tasha Baxter

major_brand : mp42

minor_version : 0

compatible_brands: isommp42

TSSE : Lavf56.4.100

Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p, 192 kb/s

Metadata:

encoder : Lavc56.1.100 libmp3lame

Stream mapping:

Stream #0:0 -> #0:0 (mp3 (native) -> mp3 (libmp3lame))

Press [q] to stop, [?] for help

[silencedetect @ 0000000004398f40] silence_start: -0.00628118

[silencedetect @ 0000000004398f40] silence_end: 3.21413 | silence_duration: 3.22

041

[silencedetect @ 0000000004398f40] silence_start: 343.844

[libmp3lame @ 00000000043b2940] Trying to remove 1152 samples, but the queue is

empty

size= 8223kB time=00:05:50.79 bitrate= 192.0kbits/s

video:0kB audio:8222kB subtitle:0kB other streams:0kB global headers:0kB muxing

overhead: 0.011485%

The generated audio file however still has the original length without any silence removed.

See the following images:

Any help is appreciated!

EDIT:

Alright, silence detect is only DETECTING the silence. Not removing it. I will try to post a solution for this.

解决方案

ffmpeg silence detect only detects the silence. One has to scan the ffmpeg output and cut the mp3 file.

In theory, this would be done as:

ffmpeg -i INPUT.mp3 -af silencedetect=n=-50dB:d=1

and monitoring for output in form of:

[silencedetect @ 0000000004970f80] silence_start: -0.00154195

[silencedetect @ 0000000004970f80] silence_end: 3.20435 | silence_duration: 3.2059

...

[silencedetect @ 0000000004970f80] silence_start: 343.84

And, cutting start and end silence:

ffmpeg -i INPUT.mp3 -ss 3.20435 -t (343.84-3.20435)

I ended up writing a small Java program which does it. Hints:

ffmpeg writes to stderr. This means, you need to use ProcessBuilder and redirectErrorStream(true).

secondly, you need to extract the silence_start and silence_end information.

then you might use the timestamps to cut the video

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值