본문 바로가기
카테고리 없음

Chromium Browser에 Video가 재생 안됐던 이유

by marklim 2024. 7. 30.

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관련하여 전반적인 개요를 확인할 수 있습니다.

Chrominum Media Playback Diagram

Reference: media/ (googlesource.com)

 

그렇다면 위 질문에 대해 대략적인 답변을 할 수 있을 것 같습니다.

Q. Browser Video Rendering 시 어디서 코덱을 갖고 어떻게 디코딩 할까요??

A. Document를 참고해보자면, media::RendererFactory( renderer_factory.h - Chromium Code Search)에서 제공된 순서대로 시도되며 첫 번째로 성공한 디코더는 재생에 사용됩니다.(일반적으로 하드웨어의 디코더를 사용)

Chromium Media Renderer

 

공식 문서를 참고하여 대략적인 답변을 할 수 있겠지만, 개인적으로는 궁금증이 풀리진 않는데요.🤔

 

HEVC 코덱에 대해 조금 더 Deep Dive 해보겠습니다.

 

아래와 같이 비디오가 재생이 정상/비정상 PC를 셋팅합니다.

 

재생되지 않는 PC
정상적으로 재생되는 PC

 

재생되지 않는 PC에서 Edge Browser Developer Tools > Media > Properties, Messages를 확인해보면 Video Decoder가 없음을 확인할 수 있습니다.

Chrome Browser는 chrome://media-internals/ 에서 확인할 수 있습니다.

Media > Properties
Media > Messages

 

정상적으로 재생되는 PC에서는 VDAVideoDecoer가 디코딩함을 확인할 수 있습니다. 

Media > Properties

 

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의 코덱 정보를 알 수 있습니다.

정상적으로 영상 재생되던 PC의 Media Foundation List
재생되지 않던 PC의 Media Fundation List

 

 

결론

Chromium Browser는 PC의 설치된 코덱 정보(Windows Foundation Media),  S/W(FFmpeg, libvpx)를 기준으로 Video를 Decoding 후 성공 시 Rendering함을 확인 했습니다.

 

영상이 재생되지 않는다면 Edge:///gpu, Edge://media-internals/를 참고하여 Troubleshooting 하시면 됩니다.

 

긴글 읽어주셔서 감사합니다.

해당 내용에 관련하여 피드백은 환영입니다.

댓글