Browser에서 Media를 Embed하려면 어떤 방법이 있을까요?
대략적으로 3가지 방법이 있습니다.
1 | Media Source Extension | MediaSource - Web APIs | MDN (mozilla.org) |
2 | <Video> Element | https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video |
3 | Encrypted Media Extensions | Encrypted Media Extensions API - Web APIs | MDN (mozilla.org) |
그렇다면 VM 혹은 일부 PC에서 영상이 재생 안된다면 어떻게 해야할까요?(=뭐가 문제일까요?)
▷이에 대해 명확한 답이 생각 나지 않는다면 아래 글을 참고 바랍니다.
영상이 재생되지 않았다면 코덱(Codec)이슈일 가능성이 높습니다.
PC에서 Codec 지원 여부를 확인하려면 아래 글을 참고 바랍니다.
Browser는 Video를 Rendering 시 어디서 코덱을 갖고 어떻게 디코딩 할까요??
아래 Diagram을 보면 Chromium에서 Media Playback관련하여 전반적인 개요를 확인할 수 있습니다.
Reference: media/ (googlesource.com)
그렇다면 위 질문에 대해 대략적인 답변을 할 수 있을 것 같습니다.
Q. Browser는 Video를 Rendering 시 어디서 코덱을 갖고 어떻게 디코딩 할까요??
A. Document를 참고해보자면, media::RendererFactory( renderer_factory.h - Chromium Code Search)에서 제공된 순서대로 시도되며 첫 번째로 성공한 디코더는 재생에 사용됩니다.(일반적으로 하드웨어의 디코더를 사용)
공식 문서를 참고하여 대략적인 답변을 할 수 있겠지만, 개인적으로는 궁금증이 풀리진 않는데요.🤔
HEVC 코덱에 대해 조금 더 Deep Dive 해보겠습니다.
아래와 같이 비디오가 재생이 정상/비정상 PC를 셋팅합니다.
재생되지 않는 PC에서 Edge Browser Developer Tools > Media > Properties, Messages를 확인해보면 Video Decoder가 없음을 확인할 수 있습니다.
Chrome Browser는 chrome://media-internals/ 에서 확인할 수 있습니다.
정상적으로 재생되는 PC에서는 VDAVideoDecoer가 디코딩함을 확인할 수 있습니다.
Chromium Soucrce Code를 확인해보면 Decoder 동작 중 H.264 혹은 HEVC가 Support하는지 Check하는 동작이 있습니다.
Reference: video_decoder.cc - Chromium Code Search
그렇다면 End User Level 에서 H264 혹은 HEVC 코덱 존재 여부를 어떻게 알 수 있을까요?
(Windows OS 기준) Video Decoder는 Windows Media Foundation에서 코덱 정보를 확인함을 알 수 있습니다.
Edge://gpu를 접속해보면 (Windows) Media Foundation의 코덱 정보를 알 수 있습니다.
결론
Chromium Browser는 PC의 설치된 코덱 정보(Windows Foundation Media), S/W(FFmpeg, libvpx)를 기준으로 Video를 Decoding 후 성공 시 Rendering함을 확인 했습니다.
영상이 재생되지 않는다면 Edge:///gpu, Edge://media-internals/를 참고하여 Troubleshooting 하시면 됩니다.
긴글 읽어주셔서 감사합니다.
해당 내용에 관련하여 피드백은 환영입니다.
댓글