avconv w wielu wątkach

9

Czy możliwe jest uruchamianie zadań na wielu procesorach lub wątkach, aby przyspieszyć avconv?
Czy trwa funkcja, jeśli nie, to dlaczego?

Shubham Chaudhary
źródło

Odpowiedzi:

11

Jesteś po -threads opcją avconv. Najbezpieczniejszym ustawieniem byłoby:

 -threads auto

ale możesz również ustawić tam liczbę całkowitą, jeśli chcesz trochę poeksperymentować. Współczesny FFmpeg (obecnie standard w Ubuntu) ustawia to auto domyślnie, jak widać w tej sekcji stron podręcznika „ffmpeg-all”:

threads integer (decoding/encoding,video)

Set the number of threads to be used, in case the selected
codec implementation supports multi-threading.

  Possible values:

     auto, 0
     automatically select the number of threads to set

 Default value is auto.

Uwaga 2 ważne punkty:

  1. To ustawienie będzie działać tylko wtedy, gdy wybrany kodek obsługuje wielowątkowość
  2. Możliwe jest ustawienie liczby wątków dla poszczególnych strumieni zamiast po prostu próby ustawienia globalnego wątku
andrew.46
źródło
1
Popraw mnie, jeśli masz inne źródło, ale mam wrażenie, że Avconv i avplay nadal używają domyślnie opcji -threads auto, jeśli nie określono inaczej. Monitor systemu wydaje się to potwierdzać.
Starszy Geek
1
Uważam, że zależy to od kodeka używanego do transkodowania. Można to formalnie przetestować, co z pewnością byłoby ciekawym testem. Informacje, które mogłem znaleźć na ten temat w Internecie, nie są szczególnie pomocne. Innym problemem byłaby używana wersja FFmpeg, opcje wątków były używane inaczej w starszych wersjach ...
andrew.46
1
Tak. FFmpeg i avconv poszły w nieco innych kierunkach od rozwidlenia. Dalsze badania wskazują, że -threads auto jest domyślnym ustawieniem w avconv, jeśli użyjesz jednego z presetów w linii poleceń.
Starszy Geek
3

Jeśli wykonujesz transkodowanie audio wielu plików, skorzystaj z GNU Parallel. Będzie pobierał listę plików jako dane wejściowe i przetwarzał je równolegle w zależności od liczby rdzeni w systemie. Na przykład, tutaj jest przykład bash, który konwertuje muzykę do formatu audio opus równolegle za pomocą ffmpeg.

find ./* -depth -type f -name \*.ogg -o -name \*.flac -o -name \*.m4a -o -name \*.mp3 -o -name \*.ogg | parallel -j+0 --gnu nice -n 19 ffmpeg -i "{}" -acodec libopus "{.}.opus" -loglevel quiet
mmstick
źródło