Qt Multimedia의 QMediaPlayer가 동작 안할 때

여기에서 말하는 문제는 윈도에서의 Qt 문제.

먼저 Backends 별 사용할 수 있는 기능(?)의 표는 아래 링크에서 확인가능.
https://wiki.qt.io/Qt_Multimedia_Backends

Qt 홈페이지에서 받을 수 있는 바이너리 라이브러리는 Multimedia Backends가 DirectShow로 되어있는것으로 보인다. 구글링해도 뾰족한 답을 찾기 힘들었는데 결국 이것도 몇시간동안 삽질해본 결과 재생 안되면 적절한 코덱을 깔아야하고(…) 아니면 Media Foundation을 사용하는 것이였다.

Media Foundation을 사용하려면 Multimedia 라이브러리를 빌드할 때 Media Foundation을 사용하도록 해야한다. 아래는 내가 사용한 qt-everywhere-opensource 패키지의 configure 옵션.

configure -opensource -confirm-license -prefix D:\OpenSource\Qt5.9.0.x64 -nomake examples -nomake tests -force-debug-info -platform win32-msvc -mp -opengl dynamic -mediaplayer-backend wmf

핵심은 -mediaplayer-backend wmf 옵션이다. 이렇게 빌드된것과 기본인 DirectShow를 사용하도록 빌드했을 때 대략 아래와같이 차이가 난다.

– DirectShow

dsengine.dll은 211KB, wmfengine.dll은 42KB

– Media Foundation

dsengine.dll은 63KB, wmfengine.dll은 167KB (qtmedia_audioengined.pdb 파일이 약간 차이있지만 코드에서 backend 별로 메크로 차이가 있는지는 확인 안해보았다.)

Media Foundation은 범용적으로 사용하는 코덱을 지원하므로 프로그램이 윈 7 이상이라면 이쪽을 사용하도록하는것이 더 나아보인다. (자세한 정보는 https://msdn.microsoft.com/ko-kr/library/windows/desktop/dd757927 이곳에서.) 물론 기존의 DirectShow가 더 다양한 코덱이 있을것으로 보기때문에 특정 포맷만 지원할것이 아니라면 DirectShow를 사용하는것이 더 나을 수 있다.

빌드 자체를 남기는 기록이 아니기때문에 여기까지. 만약 빌드 방법을 찾는다면 http://rette.iruis.net/2017/05/qt-5-8-0-webengine-%EB%AA%A8%EB%93%88-%EB%B9%8C%EB%93%9C/ 이 글을 참조.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

*
*

This site uses Akismet to reduce spam. Learn how your comment data is processed.