jak zmniejszyć użycie procesora, gdy FFMPEG tworzy filmy z wieloma przepływnościami

0

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.

M.Yazdian
źródło
System operacyjny?
slhck,
Windows Server 2008 R2
M.Yazdian

Odpowiedzi:

3

Najprostsza odpowiedź brzmi: jeśli używasz Linuksa lub podobnego, użyj nicepolecenia podczas uruchamiania ffmpeg.

Używasz go nicez dowolnym standardowym poleceniem, które dostosowuje priorytet procesora polecenia.

Więc jeśli obecnie używasz

ffmpeg -i uploaded.mpg -vcodec copy  out1.mpg

(Z wyjątkiem oczywiście bardziej interesujących argumentów), możesz po prostu zrobić

nice ffmpeg -i uploaded.mpg -vcodec copy  out1.mpg

.

Edycja: Widziałem, że używasz systemu Windows Server 2008 .

W systemie Windows zamiennikiem nicepolecenia jest użycie STARTpolecenia z opcjami.

Warto przeczytać tę stronę: http://technet.microsoft.com/en-us/library/cc770297.aspx

Możesz więc użyć czegoś takiego:

start /wait /low /b  ffmpeg [your arguments here]
  • /waitoznacza 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:

  1. Oznacza to, że Twój serwer sieciowy nie zajmuje się przetwarzaniem wideo, a zatem pozostaje wrażliwy na potrzeby użytkowników
  2. Możesz dodać więcej serwerów, aby wykonać renderowanie, jeśli chcesz (lub skorzystaj z usług w chmurze).

To jednak wymaga pracy.

GregHNZ
źródło