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
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 nice
polecenia jest użycie START
polecenia 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]
/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:
- Oznacza to, że Twój serwer sieciowy nie zajmuje się przetwarzaniem wideo, a zatem pozostaje wrażliwy na potrzeby użytkowników
- Możesz dodać więcej serwerów, aby wykonać renderowanie, jeśli chcesz (lub skorzystaj z usług w chmurze).
To jednak wymaga pracy.