Optymalizacja sprzętu za pomocą ffmpeg

0

Mam Linuksa i chciałbym zakodować niektóre filmy za pomocą ffmpeg. mam słyszał że mój procesor (drugi rdzeń procesora i5) ma sprzętową obsługę kodowania h.264.

Czy możliwe jest użycie ffmpeg, aby to wykorzystać, a jeśli tak, to w jaki sposób?

Jeremy French
źródło
Kilka ogólnych myśli: te procesory są bardzo nowe i wsparcie sprzętowe, które ma być obsługiwane przez oprogramowanie, wymaga czasu. Kompilatory musiałyby go obsługiwać, a potem także późniejsze programy. Moje umiejętności Google mogą być złe, ale nie mogłem znaleźć niczego na temat obsługi sprzętowej Intel® Quick Sync Video na FFMPEG lub GCC.
AndrejaKo
1
Jest interesująca dyskusja tutaj .
AndrejaKo

Odpowiedzi:

0

Nie, nie jest. FFMPEG nie obsługuje technologii Intel QuickSync. Aby użyć QuickSync, program musi przejść przez Intel Media SDK, który nie jest dostępny dla systemu Linux.

Mr Alpha
źródło
inne części ffmpeg są tylko Windows, więc przypuszczam, że może dodać wsparcie z wystarczającym wysiłkiem
rogerdpack
3

Na dzień dzisiejszy technologia Intel QuickSync jest obsługiwana w systemie Linux i jest udostępniana na dwa podstawowe sposoby: VAAPI i Intel's Media SDK.

Po odpowiednim skonfigurowaniu otrzymasz kodery QuickSync za pośrednictwem Intel MediaSDK, a mianowicie h264_qsv i hevc_qsv. Aby zobaczyć użycie kodera:

ffmpeg -h encoder=h264_qsv

ffmpeg -h encoder-hevc_qsv

Druga metoda, za pomocą interfejsów API VAAPI, wymaga zbudowania FFmpeg za pomocą --enable-vaapi opcja przekazana na ./configure etap. Jest to domyślne ustawienie w dystrybucjach, takich jak Debian i Arch Linux, i jako takie łatwo dostępne do użycia po wyjęciu z pudełka.

Aby wyświetlić listę dostępnych koderów i filtrów VAAPI na kompilacji FFmpeg, uruchom:

$ for i in encoders decoders filters; do
    echo $i:; ffmpeg -hide_banner -${i} | egrep -i "vaapi"
done

A w użyciu:

ffmpeg -h encoder=hevc_vaapi 

ffmpeg -h encoder=h264_vaapi

ffmpeg -h encoder=vp8_vaapi

ffmpeg -h encoder=vp9_vaaapi

Z powyższej listy jest oczywiste, co każdy z powyższych koderów wysyła kodek wideo na wyjście, od H.265 / HEVC do VP9.

Obsługa platformy różni się w zależności od platformy:

(za). Kodowanie H.264 jest obsługiwane od Sandybridge (grafika drugiej generacji Intel Core Processor) do prezentacji.

(b). Kodowanie HEVC jest obsługiwane w Skylake i poza nim, z 10-bitowym kodowaniem, które jest dostępne na Kabylake i nie tylko.

(do). Kodowanie VP8 jest dostępne przynajmniej w Broadwell (5-ta generacja procesorów Intel Core Graphics) i nie tylko.

(re). Kodowanie VP9 jest dostępne przynajmniej w Kaby Lake i powyżej. Coffee Lake i nie tylko zaoferują 10-bitowe kodowanie VP9.

Kilka dodatkowych uwag na temat jakości kodowania:

A teraz małe notatki na temat NVENC i dostrojenia go do wysokiej jakości kodowania:

Quick Sync Encoder firmy Intel, podobnie jak każdy inny koder sprzętowy, ma kilka ograniczeń w porównaniu z czystym koderem oprogramowania, takim jak x264 i x265, mianowicie kontrola jakości i ścisłe ograniczenie obsługiwanych typów tekstur wejściowych. W związku z tym, jeśli rozważasz QuickSync dla dowolnego profesjonalnego przepływu pracy, przed dokonaniem inwestycji uprzejmie oceń korzyści wydajności w porównaniu z jakością kodowania percepcyjnego.

Jeśli szukasz wysokiej jakości kodowania na VAAPI, upewnij się, że jesteś przynajmniej na Haswell (Intel 4. generacji iGPU), ponieważ ta architektura wprowadziła takie funkcje, jak koncepcja „Target Usage” (TU). Ta funkcja ma na celu umożliwienie prostego dostępu do szeregu gradacji bez skomplikowania wokół zmuszania użytkowników do wyboru szybkości transmisji bitów i metody kontroli szybkości. W poprzednich iteracjach, podczas gdy technicznie istniało siedem kroków, tylko trzy były naprawdę wystawione na konsumpcję: jakość (TU1), zrównoważona (TU4) i prędkość (TU7). Zmieniło się to wraz z najnowszym wirowaniem grafiki Intel HD, z każdym krokiem w pełni wybieranym i eksponowanym przez Intel Media SDK.

Godne uwagi są nowsze optymalizacje algorytmów sterowania przepływnością, godne uwagi koncepcje to LA-BRC. Spójrz na to tutaj . Widzieć to odpowiedz na więcej wskazówek na ten sam.

林正浩
źródło
0

x264 uzyskaj dostęp do QuickSync bez korzystania z MediaSDK. Intel dotarł do nich i wzajemnie sobie pomogli, aby to osiągnąć (google for "x264 QuickSinc). Możliwe, że wykorzystasz ich wysiłek i przeniesiesz go do ffmpeg ...

Loudenvier
źródło