MP3'ün sonuna sessizlik katın


12

Herhangi biriniz Linux'ta bir MP3'ün sonuna sabit bir süre sessizlik eklemenin bir yolunu biliyor musunuz? Örneğin, MEncoder, FFmpeg, vb.

Komut satırı ve sunucumuzda çalıştırılacağı için komut satırı olması gerekir.

Ben bu konuda googled ve yapabileceğim en iyi SoXpad işlevini kullanmak , ama bu MP3'lerle çalışmaz.

WAV'a dönüştürebilir, SoX'u kullanabilir, sonra tekrar MP3'e dönüştürebilir ve meta verileri (eksi süre) orijinalden yeni MP3'e kopyalayabilirim. Ancak, bunun için bir senaryo yazmadan önce tek vuruşlu bir çözüm olup olmadığını görecektim.


2
Ses verilerinin yeniden sıkıştırılmasını önleyen mp3DirectCut (yalnızca Windows, ancak Wine altında Linux ile uyumlu olduğunu söylüyorlar) gibi bir şey başarabileceğinizi düşünüyorum . MP3 -> WAV -> MP3'e gidecek olsaydınız, zaten MP3 sıkıştırılmış veri akışını yeniden sıkıştırır ve yolda çok fazla kalite kaybedersiniz.
Atılım

Teşekkürler. Windows yazılımını komut satırından Wine üzerinden çalıştırabilir misiniz? Sunucumuza Wine yüklemek konusunda isteksiz olduğum için mümkünse Wine çözümlerinden kaçınmayı tercih ederim.
Max Williams

Hmm, eğer zaten yoksa Şarap yolundan kaçınmak isteyebilirsiniz. Wine, basit bir MP3 kesme / birleştirme aracı için bir veya iki megabaytın üzerinde oldukça büyük bir indirme. Eminim, Linux'a özgü bir çözüm var. Başka bir araç bulursam size haber vereceğim.
Atılım

Yanıtlar:


9

SoX'in padargümanı ve aşağıdaki sözdizimi ile bunu kolayca yapabilirsiniz :

sox <oldfile> <newfile> pad <silence at beginning of file> <silence at end of file>

Misal:

sox mp3.mp3 mp3withsilence.mp3 pad 0 1

Bu sessizlikler saniyeler içinde. (Bu sessizlikleri belirli konumlara eklemek için farklı bir sözdizimi kullanarak başka kullanımlar da mümkündür. Daha fazla bilgi için SoX belgelerine bakın.)


MP3 dosyaları kod çözme ve kodlama için sırasıyla libmad-0.dll ve libmp3lame-0.dll yüklü ile Tamam test etmeliyim.) Mümkün olduğunca, kayıpsız bir format ile çalışma ve sadece dönüştürmek için tavsiye ederim MP3 yalnızca sonunda.
Fabien Snauwaert

bu gerçekten harika - teşekkürler Fabien!
Max Williams

Bu kayıpsız mı?
Geremia

Güncelleme: Sox kılavuzunda dahili bir formata dönüştürdüğünü okudum ve sonra yeniden kodladım…
Geremia

MP3 kayıplı bir formattır. Kayıplı bir biçime kodlama ve yeniden kodlama, ses kalitesini (duyup duymadığınızdan bağımsız olarak) kademeli olarak düşürecektir. Bu nedenle, kayıpsız formatlarla çalışmak ve sonunda yalnızca bir kez kayıplı bir formatta kodlamak en iyisidir.
Kayıp

15

Ffmpeg ile sessizlik oluşturmak için aevalsrc filtresini kullanabilir ve ardından ikinci bir komutta bunları kayıpsız bir şekilde birleştirmek için concat protokolünü kullanabilirsiniz:

ffmpeg -filter_complex aevalsrc=0 -t 10 10SecSilence.mp3
ffmpeg -i "concat:input.mp3|10SecSilence.mp3" -c copy output.mp3

Sessizliğin uzunluğunu, -t 10saniye cinsinden istediğiniz zamanı değiştirerek kontrol edebilirsiniz . Tabii ki, sadece bir kez sessizliği oluşturmanız gerekir, o zaman dosyayı etrafında tutabilir ve istediğiniz dosyaların her birini doldurmak için kullanabilirsiniz. Concat demuxer'ı da aramak isteyebilirsiniz - biraz daha işlemci yoğunluğu vardır, ancak bir kabuk betiğine düşmeyi daha kolay bulabilirsiniz.

Bunu tek bir komutta yapmak istiyorsanız, concat filtreyi kullanabilirsiniz - bu, sesinizi yeniden kodlamanızı gerektirir (filtre filtreleri ile uyumlu olmadığından -codec copy), bu nedenle yukarıdaki seçenek muhtemelen sizin için en iyi olacaktır. Ancak bu, sesi kodlamadan önce sonuna kadar sessizlik eklemek isteyen ham PCM ile çalışan herkes için yararlı olabilir:

ffmpeg -i input.mp3 \
-filter_complex 'aevalsrc=0::d=10[silence];[0:a][silence]concat=n=2:v=0:a=1[out]' \
-map [out] -c:a libmp3lame -q:a 2 output.mp3

d=10İstediğiniz zamana (saniye cinsinden) geçerek sessizliğin uzunluğunu kontrol edin . Bu yöntemi kullanırsanız, bu FFmpeg MP3 kodlama kılavuzunu kullanışlı bulabilirsiniz.


teşekkürler @evilsoup. Ben sadece denedim ve aşağıdakileri aldım - max-thinkpad-linux: ~ $ ffmpeg -filter_complex aevalsrc = 0 -t 4.61 silence.mp3ffmpeg version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers built on Nov 6 2012 16:51:33 with gcc 4.6.3 *** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead. Unrecognized option 'filter_complex' Failed to set value 'aevalsrc=0' for option 'filter_complex'
Max Williams

@max Her şeyden önce, aslında libav projesinden avconv kullanıyorsunuz - ana proje yerine Debian ve Ubuntu'nun kullandığı bir FFmpeg çatalı ve ffmpeg'in sakat bir versiyonunu sağlıyorlar. Kullanmayı deneyin avconvyerine - sözdizimi sadece yerini aynı olmalıdır ffmpegile avconv.
evilsoup

Bu işe yaramazsa, ffmpeg'in daha yeni bir sürümüne yükseltmeyi deneyin. Ubuntu'da olduğunuz için, bu PPA'yı kullanabilmeniz gerekir veya en son sürüm için kaynağından derleyebilirsiniz .
evilsoup

1
@MaxWilliams Veya önce derlemeniz gerekmeyen statik bir yapı indirebilirsiniz . Sadece indirin, çıkarın, kullanın.
slhck

1
ileride başvurmak için: benim gibi bir hatayla karşılaşırsanız, tek tırnakları çift tırnaklarla değiştirmeyi deneyin
SZT
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.