실시간 영상에서 ts파일 확장자를 사용하는 이유

그래도 오랜기간 운영하다보니 관련 문제를 많이 접하였습니다.

플랫폼사는 대형 서버 운영사지만 서버에서 종종 문제를 일으키기도 하고, 사용자의 환경이 끊김이 없다는것을 확신할 수 없습니다.

 

실시간 다운로드에 MP4를 사용하지 않는 이유 (간단히 설명)

MP4는 2022년 현재에도 가장 널리 사용되는 코덱입니다.

적당히 압축이 잘되어있으면서도 가장 많은 기기에서 지원하여 대부분의 기기에서 무리없이 재생가능합니다.

 

그러나, MP4는 실시간 영상에 안정성을 보장해주지 못합니다.

MP4는 파일 구조상 "첫번째에 OO부터 OO까지(끝 위치)가 몇 초 짜리의 영상이다"라고 적혀있는데

매번 영상이 들어올 때마다 이것을 재작성해줘야하고, 만약 누락되면 재생이 불가할 가능성이 높습니다.

또한 문제가 발생하였을때 복구하기가 어렵습니다.

 

MP4가 깨지는 다양한 이유

서버 문제

  • 네트워크 오류
  • 오류로 영상 송출은 중단되었지만 라이브가 중단되지 않음
  • 잘못된 시간정보 송출

 

PC 문제

  • CPU/DISK 오류로 영상을 받아들이지 못할때
  • 강제 중단됨
  • 네트워크 오류
    절전모드 사용시에도 네트워크가 끊깁니다.

 

실시간 영상에서 ts파일 확장자를 사용하는 이유 (간단히 설명)

MPEG-TS형식의 파일은 아래 설명부분에 차이가 있습니다.

MP4는 파일 구조상 "첫번째에 OO부터 OO까지(끝 위치)가 몇 초 짜리의 영상이다"라고 적혀있습니다.

TS는 파일 구조상 "잘게 쪼개진 영상 사이에 OO부터 OO까지(조각 끝 위치)가 몇 초 짜리의 영상 조각이다"라고 적혀있습니다.

잘게 쪼개진 영상들의 묶음이라서 맨 뒷부분에서 오류가 생기더라도 실질적으로 맨 뒷부분 한 조각(= 몇 초)만 손상되므로 재생에는 큰 문제가 없는 것 입니다.

실시간으로 영상이 전송되는대로 저장하고 이전 부분을 건드릴 필요가 없기 때문에 이전 부분은 손상될 우려가 거의 없어집니다.

다만, 잘게 쪼개어 사이사이에 영상 정보를 포함하여 저장하므로 그 만큼 용량이 늘어나고 + 동영상 플레이어에서 시간을 넘길때 마다 구조 정보를 갱신해와야하므로 스킵할 때마다 정보를 불러와서 확인해야하므로 오래걸리는 것 입니다.

 

MP4와 TS파일의 차이 (간단히 설명)

과자로 쉽게 비교

  • MP4: 대형 벌크 포장된 과자 1kg
  • TS: 낱개 포장 과자 10g씩 100개

용량 (과자 포장지 + 과자)

  • MP4: 과자양은 1kg + 겉면 포장 1개
  • TS: 과자양은 1kg + 겉면 포장 1개 + 낱개로 개별 100개 (용량이 커짐, 과대포장)

시간 넘기기 (과자 포장지 뜯기)

  • MP4: 몇 퍼센트에 해당하는 위치로 정확히 바로 찾기 (포장지에 시간값에 따른 정보가 적혀있음.)
  • TS: 개별 과자별로 ±1g씩 오차가 있어서 정확한 위치를 찾으려면 포장지에 적어둔 정확한 g값을 순서대로 확인하여 찾기 (시간에 따른 위치 찾는데 오래걸림)

온라인에 실시간 다운로더 출시 이후 많은 사람들이 접하면서 m3u8과 관련 정보가 늘어났지만 올바르지 않은 정보가 너무 많이있어 이 글을 작성하게 되었습니다.

 

이렇게 TS파일과 MP4파일에 대해 비교해봤는데요.

TS파일과 MP4는 모두 MPEG(Moving Picture Experts Group)에서 만든 컨테이너(확장자)로 내부에 영상은 주로 AVC1(H264) 표준에 따라 손실압축됩니다.

스트림 복사방식으로 추가 손실압축 없이 변환시 TS파일과 MP4파일의 화질차이는 없답니다.

다운로드시 안정성을 위해 TS파일을 사용하지만, 재생시에 불편한 TS파일을 고집할 이유는 없습니다.

스트림 복사방식?

위에 설명을 한 과자로 다시 예를 들면..

과자는 그대로 두고 포장만 다시하는 방식으로 이해하시면 되겠습니다.