인코딩 - 버퍼링에 영향을 줄 수 있는 동영상 원본 인코딩 환경
매일 수십 개의 동영상을 업로드 한다면 한 달 뒤에는 수백 개의 영상이 누적됩니다.
그리고 다양한 인코딩 프로파일(profile)로 변환하게되면 그 수는 몇 배로 증가되는데요,
몇 개월 만 지나도 수천 개, 혹은 수만 개로 늘어난 동영상 중 “특정 동영상”의 스트리밍에서
버퍼링이나 이상 증상이 있다면 어떤 원인인지, 어떤 대책을 세워야 할지 당황스럽기 까지 합니다.
이미 웹 사이트, 앱에는 수 백 줄(개)의 스트리밍 주소가 배포되어 있기 때문입니다.
문제의 감지는 매우 직관적입니다.
시청 중 특정 시간대에서 아래와 같이 화면 중간에 버퍼링 표시가 그 중 대표적인데,
아래 영상의 경우 특정 동영상 재생 시 약 50초 후부터 버퍼링 및 단절 현상이 발생했습니다.
서비스 전반에 걸친 영향이 아닌 특정 콘텐츠의 이슈는 원인파악에 적지 않은 시간이 소요되며,
결론적으로 의심되는 조건 중 원본 콘텐츠의 제작 단계도 버퍼링에 영향을 줄 가능성이 있었다고 보입니다.
이 경우는 버퍼링 현상과 함께, 특정 구간 대의 TS 파일 용량이 상당히 크다는 고객담당자분의 언급을 참조하여
원본 동영상 콘텐츠까지 확인한 결과, 해당 구간에서 유발 원인으로 의심되는 상황을 있다는 것을 확인했습니다.
(아래는 해당 원본 동영상을 다음 팟 플레이어에서 재생시켜 확인할 수 있는 일반적인 모니터링 환경입니다.)
영상 시작부터 재생이 진행되는 동안 원본영상의 Bit-Rate는 1 Mbps 전 후로 완만히 변하고 있고,
(붉은 색 박스를 보시면 됩니다.) 이 상황에서는 스트리밍 서비스도 문제없이 제공됩니다.
그런데, 50초 시점을 지나는 순간 아래와 같이 Bit-Rate가 급상승하는 현상을 보게 됩니다.
1 Mbps 안 팎 이었던 수치가 40배 이상 증가되었고 이후 후반부로 갈수록 감소됩니다.
이러한 Bit-Rate의 급격한 증가는 50초 근처부터 시작되었고 버퍼링이 발생되는 시점도 거의 일치 합니다.
WECANDEO는 업로드된 원본 동영상 입수 이후 Adaptive Bit-Rate Streaming으로 서비스를 제공하는데,
업로드된 콘텐츠를 트랜스코딩 할 때 ABR(Available Bit Rate)방식으로 인코딩하면서 특정 시간 단위(5초, 10초 등)로 TS파일을 생성합니다. 앞서, TS파일의 크기가 너무 크지 않냐는 질문을 받았다고 했는데, 위와 같은 경우 Bit-Rate 편차가 너무 급격히 나면서 단위 TS파일이 충분한 데이터를 담지 못해 버퍼링이 생겼을 가능성이 매우 높았습니다.
(인코딩 방법에는 VBR(Variable Bit Rate), CBR(Constant Bit Rate) 등 2가지 방식이 더 있지만, WECANDEO를 운영하면서 얻은 경험상 ABR방식이 인터넷 서비스 용도로 변환할 경우 가장 좋은 화질을 보장한다고 보고 있습니다. 각 인코딩 방법에 대한 내용은 검색 하면 너무 많이 나오네요. 양해부탁드립니다.)
대부분 스트리밍 서비스 시 문제가 발생하면
원본 데이터를 한 번 더 업로드 하거나, 트랜스코딩 단계를 한 번 더하는 경우가 있습니다.
하지만 이런 경우는 동일한 프로세스로 진행하더라도 50초 전후의 버퍼링, 순단 현상은 동일하게 발생될 수 있습니다.
그렇지만, 업로드 용 원본 동영상 콘텐츠 제작 시 문제가 있었다고 볼수는 없다고 생각됩니다.
(특별한 에러, ALERT없이 정상적인 프로세스로 산출물이 나왔다고 봐야 겠습니다.)
이 현상의 재발을 막기위해서는 당장 두 가지 방법이 있을 것 같습니다.
한가지는 원본 동영상 콘텐츠 인코딩 시 인코딩 옵션을 조절하는 방법인데,
일반적으로 쓰이는 환경을 고려, 팟인코더를 기준으로 보면 아래와 같습니다.
(아마 여타 인코더, 편집장비에도 동일한 옵션이 있으리라 봅니다.)
- 이 상태에서 보면, 중간 “비트레이트” 옵션 상에서 “최대 비트레이트를 제한” 하는 항목을
선택하지 않을 경우 ABR 5 Mbps로 인코딩됩니다. - 압축방식은 1 PASS-CBR로 되어 있지만 실제로는 ABR로 인코딩 되는데, 선택할 경우
최대 비트레이트가 5Mbps로 제한됩니다. 참고로 2PASS-CBR로 압축하면 어느 정도 해결되겠지만
인코딩 속도가 현저히 느려질 수 있습니다. - 이렇게 되면 이번 건과 같이 비트레이트가 급격히 튀는(?) 현상으로 인한 트랜스코딩 시
TS 파일 데이터의 문제를 해소할 수 있을 것으로 봅니다.
두 번째 방식은 WECANDEO의 트랜스코딩 시스템에서 최대 비트레이트를 제한하는 방법인데,
동영상 전체의 평균비트레이트의 X배수 정도로 올라가지 못하도록 하는 옵션을 넣는 방법입니다.
다만 이 부분의 옵션적용을 위해서는 최적 효과를 내기 위해 얼마정도의 배수처리를 해야할지에 대한
수많은 테스트가 필요합니다.
업로드 하는 영상은 최대한 화질 품질이 좋아야 합니다.
또한, 업로드된 동영상을 스트리밍 서비스로 제공하기 위한 영상 품질도
최대한 원본수준으로 맞추기 위해서 WECANDEO는 다양한 테스트를 끊임없이 진행하고 있습니다.
Updated almost 3 years ago