Oryginalne pytanie
Chcę mieć możliwość wygenerowania nowego (w pełni poprawnego) pliku MP3 z istniejącego pliku MP3 do wykorzystania jako podgląd - styl wypróbuj przed zakupem. Nowy plik powinien zawierać tylko pierwsze n sekund utworu.
Teraz wiem, że mogę po prostu „pociąć strumień” na n sekund (obliczając na podstawie bitrate i rozmiaru nagłówka) podczas dostarczania pliku, ale jest to trochę brudne i prawdziwy PITA na ścieżce VBR. Chciałbym mieć możliwość wygenerowania odpowiedniego pliku MP3.
Czy ktoś ma jakieś pomysły?
Odpowiedzi
Zarówno mp3split
i ffmpeg
to zarówno dobre rozwiązania. Wybrałem ffmpeg, ponieważ jest powszechnie instalowany na serwerach linux i jest również łatwo dostępny dla systemu Windows . Oto kilka dobrych parametrów wiersza poleceń do generowania podglądów za pomocą ffmpeg
-t <seconds>
posiekaj po określonej liczbie sekund-y
wymuś nadpisanie pliku-ab <bitrate>
ustaw bitrate np. -ab 96k-ar <rate Hz>
ustaw częstotliwość próbkowania np. -ar 22050 na 22.05kHz-map_meta_data <outfile>:<infile>
skopiuj metadane ścieżki z pliku infile do pliku wyjściowego
zamiast ustawiania -ab i -ar, możesz skopiować oryginalne ustawienia ścieżki, jak sugeruje Tim Farley, za pomocą:
-acodec copy
Odpowiedzi:
Polecam również ffmpeg, ale wiersz poleceń sugerowany przez Johna Bokera ma niezamierzony efekt uboczny: ponownie koduje plik do domyślnego bitrate (który wynosi 64 kb / sw wersji, którą tu mam). Może to dać klientom fałszywe wyobrażenie o jakości plików dźwiękowych, a także może to zająć więcej czasu.
Oto wiersz poleceń, który pokroi do 30 sekund bez transkodowania:
Przełącznik -acodec mówi ffmpeg, aby używał specjalnego kodeka „kopiującego”, który nie transkoduje. Jest błyskawiczny.
UWAGA: polecenie zostało zaktualizowane na podstawie komentarza Oben Sonne
źródło
ffmpeg
wersje (przynajmniej od 0.10.6) interpretują opcje inaczej w zależności od pozycji. Opcje związane-i ...
z danymi wejściowymi muszą pojawić się przed, a opcje związane z danymi wyjściowymi muszą pojawić się po-i ...
. Oznacza to,ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3
że teraz byłaby poprawna odpowiedź.-ss hh:mm:ss[.xxx]
. Przykład: pokroiffmpeg -t 30 -ss 00:00:15.500 -i inputfile.mp3 -acodec copy outputfile.mp3
do 30 sekund, zaczynając od 00h 00m 15s 500ms .ffmpeg -i inputfile.mp3 -t 30 -acodec copy outputfile.mp3
to działa idealnieJeśli chcesz USUNĄĆ pierwsze 30 sekund (i zachować resztę), użyj tego:
źródło
próbować:
źródło
To polecenie działa również doskonale. Przyciąłem swoje pliki muzyczne z 20 do 40 sekund.
źródło
możesz użyć mp3cut:
Jest w repo Ubuntu, więc po prostu:
sudo apt-get install cutmp3
.źródło
Możesz spróbować Mp3Splt .
Używałem go wcześniej w usłudze C #, która po prostu opakowała proces win32 mp3splt.exe. Zakładam, że coś podobnego można by zrobić w twoim scenariuszu Linux / PHP.
źródło
Mam błąd, robiąc to samo
Naprawiono dla mnie:
źródło
medipack to bardzo prosta aplikacja wiersza poleceń, która jest opakowaniem
ffmpeg
.możesz przyciąć wideo za pomocą tych poleceń:
możesz przeglądać opcje podkomendy trim jako:
możesz również zbadać inne opcje za pomocą
medipack -h
możesz odwiedzić https://github.com/srbcheema1/medipack i przykłady realizacji transakcji w README.
źródło
ffmpeg -i input -ss <start time> -to <end time> output
-t
której można używać alternatywnie,-e
co oznacza, że przypuszczam, że mam przyciąć następne 4 min 36 s wideo, nie muszę się martwić dodawaniem tych czasów ręcznie, również zapewniłem podobną łatwość podczas przycinania filmów, zobacz przykłady w README dowiesz się, dlaczego jego CLI jest łatwiejsze niż zwykłe ffmpeg. Zgadzam się, że nie jest to tak potężne, ale dla normalnego człowieka jego poręczne narzędzie.ffmpeg
ma-to
opcję, którą-t
prawdopodobnie robi.-vf "crop=iw*0.1:ih*0.1:0:0"