Staram się zapewnić stronę internetową działającą jak Youtube. Aby zapewnić moim użytkownikom możliwość przesyłania ich wideo na mój serwer z wieloma przepływnościami przez FFMPEG. Ale gdy FFMPEG tworzy wielobitrowe pliki wideo z pojedynczego wideo, użycie procesora serwera jest maksymalnie wykorzystywane. Oznacza to, że nawet ja używam najsilniejszego procesora na rynku, tylko kilka osób może przesłać swoje filmy. Więc proszę, doradzaj mi, jak zmniejszyć użycie procesora, gdy FFMPEG tworzy filmy o wielu przepływnościach.
0
Odpowiedzi:
Najprostsza odpowiedź brzmi: jeśli używasz Linuksa lub podobnego, użyj
nice
polecenia podczas uruchamiania ffmpeg.Używasz go
nice
z dowolnym standardowym poleceniem, które dostosowuje priorytet procesora polecenia.Więc jeśli obecnie używasz
(Z wyjątkiem oczywiście bardziej interesujących argumentów), możesz po prostu zrobić
.
Edycja: Widziałem, że używasz systemu Windows Server 2008 .
W systemie Windows zamiennikiem
nice
polecenia jest użycieSTART
polecenia z opcjami.Warto przeczytać tę stronę: http://technet.microsoft.com/en-us/library/cc770297.aspx
Możesz więc użyć czegoś takiego:
/wait
oznacza uruchomienie polecenia na końcu i poczekaj na jego zakończenie. W przeciwnym razie uruchomi ffmpeg i natychmiast powróci - być może uruchomi kolejną kopię ffmpeg, aby utworzyć alternatywną przepływność, jeśli zbudowałeś taką pętlę./low
to bit mówiący o uruchomieniu procesu z niskim priorytetem/b
oznacza, że nie otwieraj okna wiersza polecenia, które nie będą potrzebne na serwerze.ALE
To prawdopodobnie nie jest NAJLEPSZA odpowiedź. Najlepszą odpowiedzią będzie przetwarzanie wideo na innym serwerze (lub serwerach). Musisz udostępnić bazę danych i miejsce na dysku. Gdy ktoś prześle film, należy go oznaczyć do konwersji. Dzięki temu farma renderująca może kolejno wykonywać zadania renderowania, zapisując dane na dysku i aktualizując bazę danych o dostępne bitrate.
Oddzielenie renderowania w ten sposób ma dwie zalety:
To jednak wymaga pracy.
źródło