안녕하세요 ^^;;;
어제에 이어 오늘도 글 하나 올립니다 ^^;;
QSV 관련해서 요청해주신 분들이 많은데..
왜 강좌로 못올리는지 이야기 해드립니다..
VAAPI의 장점은 CPU(정확히는 GPU) 만 지원 된다라고 하면..
세대나 종류에 관계 없이 모두 지원하기 때문에..
하나의 강좌로 진행할 수 있습니다..
그렇기 때문에 강좌로 진행하는게 그나마 쉬운 편입니다..
하지만 QSV는 인텔의 IMSS (intel media server studio) 에 전적으로 의존하기 때문에..
이것을 따라야 합니다..
여기서 발생하는 문제는 아래와 같습니다..
이게 큰 문제일 수도 있습니다..
1. 전용 커널을 빌드해야 합니다..
IMSS 내에 커널 패치가 있습니다..
이것은 버전은 한정해서 지원합니다..
예를 들면 imss 2017 은 커널 4.4 로 한정하고 있습니다..
오래된 커널입니다.. ㅜㅜ 이것에 imss 내의 커널 패치를 한 다음 커널을 빌드 합니다..
완전히 커스텀 커널이 됩니다..
여기서 발생하는 문제는 구커널에 따른 일부 패키지 설치 불가입니다..
특히 커널에 민감한 버추얼박스 같은 경우.. 설치가 안되거나.. 실행이 안되는 문제가 있습니다..
저처럼 버추얼박스 매니아 같은 경우.. 정말 큰 아쉬움입니다..
단순히 커널 빌드하는 것도 어려운데.. 일부 패키지의 설치나 실행이 안되는 것은 정말 치명적입니다..
2. imss 내의 libdrm 과 libva, GPU 드라이버를 직접 빌드해서 설치해야 합니다..
이것은 크게 문제가 되진 않는데.. 어떤 문제가 발생할지는 저도 잘 모릅니다..
아에 vaapi 와의 충돌 방지를 위해 관련 패키지는 설치하지 않습니다..
업데이트 시 관련 패키지의 호환성을 검증해야 하는 문제가 있습니다..
3. QSV 관련 링크는 수동으로 직접 만들어줘야 합니다..
vaapi 와는 전혀 다르게 자동으로 되는게 없습니다...
수동으로 링크 해줘야 하기 때문에.. 이것 또한 하나라도 빠지면 QSV가 동작 안합니다..
4. 전용 FFMPEG 가 필요합니다..
몇번의 ffmpeg 빌드 끝에 알게 되었습니다..
QSV 설정 된 상태에서 ffmpeg 를 빌드하는게 가장 좋습니다..
이 경우 가장 성공확율이 높았습니다...
한번 빌드 해놓은 ffmpeg 는 같은 imss 에서는 호환성을 유지하는 듯 합니다..
5. TVH의 트랜스코딩..
이게 가장 큰 문제겠네요..
일단 최신 버전인 4.3.xxxx 버전은 사용 불가입니다..
4.2.x 버전을 사용하는게 좋으며,,
내장된 ffmpeg 3.4 버전과의 호환성에 심각한 문제가 있습니다..
그렇기 때문에 ffmpeg 버전을 낮춰서 빌드해야 하며,
이렇게 빌드 하기 위해서는 ffmpeg 관련 소스를 직접 수정해야 합니다..
한마디로 삽질을 좀 해야 합니다..
TVH를 빌드해 보신 분만 아실 듯 하네요..
이게 얼마나 삽질인지 ㅜㅜ
6. 인텔의 화이트 페이퍼
이것의 존재는 저도 아주 잘 알고 있습니다..
참고도 아주 많이 했고요...
그러나.. 이것으로 할 수 있는 것은 별로 없습니다...
왜냐하면 이것은 imss2016 기준으로 만들어졌기 때문입니다...
2017이나 2018 에 대응하지 못하고...
CPU도 5세대 브로드웰에 최적화 되어 있습니다...
그나마 5세대라면 어느정도 참고가 되지만..
6세대나 4세대의 경우.. 몇가지 더 추가 과정이 필요합니다..
7. i3 이상이라는 CPU 제한
셀러론이나 펜티엄.. XXX 트레일 같은 저가형 보급형 CPU 는 지원조차 하지 않습니다..
리눅스 + imss 기준입니다.. 윈도우에서 지원되는 것과는 전혀 다릅니다..
저전력으로 유명한 XXX 트레일을 지원안하기 때문에..
투자 비용도 어느정도 감수해야 합니다..
8세대가 나온 마당에 5세대나 6세대 를 구매하는 것은 정말 아깝죠...
그렇다고 저렴한 것도 아니고요..
8. 이것을 설명하는 이유는??
그냥 vaapi 로 가시라는 것입니다..
CPU의 제한에.. 수많은 빌드와 설정.. 그리고 링크...
이것을 다 하는 것 보다는...
조금은 화질이 떨어지지만 설정이 쉬운 vaapi 로 가시는게 맞다는 것입니다..
특히 7세대와 8세대는 답이 없죠.. 무조건 vaapi 입니다...
libva 2.x 버전에서는 QSV 와 비교해도 크게 화질이 떨어지지 않습니다...
대충 비트레이트 대비 70-80%에 근접합니다...
모바일에서 보실 것이면,, 움직임 많은 부분이나.. 화면 전환이 빠른 부분을 제외하고는
큰 차이도 없습니다..
그렇기 때문에.. 저도 지금은 vaapi를 사용합니다...
QSV 에서는 정말 어려운 hevc 트랜스코딩도 vaapi 에서는 CPU만 지원되면 간단히 사용 가능합니다..
1080p 기준 3000Mbps 정도급으로 트랜스코딩하면.. QSV(h264_qsv)나 hevc_vaapi 나 큰 차이도 없습니다..
QSV 관련 강좌를 요청 하셔서..
이렇게 강좌가 왜 어려운 지 이유를 올려봅니다...
만일 강좌가 이뤄진다면...
기본적으로 imss 버전별로... 인텔의 CPU 세대별(4 /5/ 6 세대)
나눠서 경우의 수에 맞춰 강좌를 올려야 합니다...
vaapi에 비교하면.. 강좌의 수가 훨씬 많아져야 하는 것이죠... ^^;;;
그렇기 때문에.. 저도 QSV는 이제 거의 놓아주고 있습니다...
메인 NAS인 6700T가 유일하게 QSV 머신이긴 한데...
지금은 소비전력 문제로 2달째 잠자고 있네요..
가을쯤에는 깨우겠지만...
이것도 vaapi 로 갈아 엎기 위해 고민중입니다 ^^;;;;
그러므로.. QSV 강좌는 정말 어려울 듯 합니다... ^^;;;;
-블루-
제가 처음 스터디 할 때에 정리 노트를 보면...
대학때 이렇게 공부했으면.. 과탑도 문제 없다라고 생각될 정도니까요 ^^;;;
그저 부러울 따름입니다 ^^;;
1) windows10 + mediaportal + mpextended 조합으로 iptv를 ffmpeg로 h264_qsv
2) linux mint 19 + tvh 조합으로 h264_vaapi
로 동시에 두 시스템에서 사용해 보았는데, 화질 차이가 이루 말 할수 없더군요. vaapi는 정지 화면은 괜찮은데, 움직임이 많은 화면에서는 깍두기가 작렬합니다.
근데, qsv와 vaapi를 사용하면서 모니터를 해보면, 동일 비트레이트/해상도에서 vaapi 보다 qsv의 cpu 점유율이 2배 이상 높습니다. vaapi는 4 스트림을 트랜스코딩 해도 점유율이 50%를 넘지 않는데, qsv는 2 스트림만 하면 70 ~ 90% 까지 널뛰더군요. 그래서 qsv는 단순히 gpu만 사용하는 것이 아니고 cpu로 보조하는 뭔가가 있는게 아닌가 라는 생각이 들었습니다.
그러다가 지금 5, 6, 7세대 다 건너뛰고 한번에 8세대로 와서 사용해 보는데, 와우... vaapi 화질이 장난 아니게 좋아졌네요. 하스웰 qsv 화질하고 커피레이크 vaapi 화질은 사실상 동일하게 보입니다. 안타깝게도 커피레이크는 시스템이 한대밖에 없어서 윈도우 qsv와 직접 비교가 안 되어서 아쉽지는 하지만, 블루님 말씀처럼 vaapi 화질에 장족의 발전이 있었거나, 아니면 레이크 계열의 cpu에 오면서 하드웨어상 뭔가 큰 발전이 있었거나요.
TVH에서 vaapi 트랜스코딩 시.. GPU 사용율은 거의 동일합니다..
즉, GPU의 스펙이 좋으면 더 화질이 좋은 것을 확인했습니다..
제가 7세대 i5-7400T를 트랜스코딩 전용으로 사용 중인데.. vaapi 2.1 설정으로요..
거의 QSV에 근접하는 화질을 보여준다는게 이 때문입니다.. ^^;;
QSV는 인텔의 고유 알고리즘은 적용한 인코더를 사용하고..
VAAPI는 범용 알고리즘을 적용한 인코더를 사용합니다..
QSV는 개선될 가능성이 너무 적고,,
VAAPI는 앞으로도 개선 가능성이 많습니다..
게다가 HEVC 코덱이 무료자나요.. (QSV는 유료입니다.. 3999달러)
8세대에서 hevc_vaapi 1080p로 한번 트랜스코딩 해보세요 ^^;;
정말 화질 좋습니다.. ^^;;;
이전에는 gpu h/w 트랜스코딩은 순수하게 gpu만 사용하는 거니까 cpu 점유율에 영향을 미치지 않는다고 알고 있었지만, 그게 잘못된 정보였나 봅니다.
그래서 화질을 중시하면.. i5 이상을..권하고..
화질에 관심없고 비트레이트만 줄이는 것을 원하면 J3455나 J4105 를 권합니다 ^^;;;