Education·7 min

Shamir

.TS 파일이란 무엇이며, 스트림은 왜 .TS 파일로 구성될까요

스트림 매니페스트를 열어 본 적이 있다면 .ts로 끝나는 파일 목록을 본 적이 있을 것입니다. 레코더나 캡처 카드에서 영상을 가져와 본 적이 있다면 이런 파일이 생겼을 수도 있습니다. 그리고 파일을 더블 클릭해서 열어 보려 했다면 아무 일도 일어나지 않았을 가능성이 꽤 높습니다.

.tsMPEG 트랜스포트 스트림을 뜻하며, 동영상에서 가장 조용하지만 중요한 포맷 중 하나입니다. 1990년대에 위성 및 지상파 방송용으로 설계되었고, 30년 뒤 인터넷 스트리밍의 막대한 비중을 담당하게 되었습니다. 그 이유는 원리를 알고 나면 정말 우아하게 느껴집니다.

트랜스포트 스트림이란 실제로 무엇인가

여러분이 알고 있는 대부분의 동영상 포맷은 파일입니다. 앞부분에 헤더가 있고, 모든 데이터의 위치를 나타내는 인덱스와 정해진 끝이 있는 컨테이너죠. MP4가 이런 방식으로 동작합니다. 디스크에 저장한 뒤 원하는 위치를 탐색하도록 설계된 포맷입니다.

트랜스포트 스트림은 이런 구조가 아닙니다. 언제든 중간에서 받아 사용할 수 있는 작고 고정된 크기의 패킷이 연속해서 흐르는 형태이며, 패킷 하나의 크기는 188바이트입니다.

이 설계는 방송에서 비롯되었습니다. TV에서 채널을 맞출 때 무언가의 시작 부분부터 보는 것은 아닙니다. 이미 진행 중인 신호에 접속하므로 1~2초 안에 화면이 나타나야 합니다. 앞부분에 헤더와 인덱스가 있는 포맷은 쓸모가 없습니다. 시작 지점 자체가 없기 때문입니다.

그래서 트랜스포트 스트림은 필요한 모든 정보를 계속 반복해서 보냅니다. 일정한 간격으로 스트림에 어떤 데이터가 들어 있는지 설명하는 테이블을 다시 전송하고, 디코딩을 시작할 수 있는 완전한 키프레임도 주기적으로 포함합니다. 어느 지점에서 접속해도 1초 안에 재생을 시작할 수 있습니다.

이것이 핵심이며, 나머지 모든 특성도 여기서 설명됩니다.

인터넷 스트리밍이 이를 채택한 이유

대부분의 라이브 동영상 스트리밍에 사용되는 방식인 HLS는 콘텐츠를 일반적으로 2~10초 길이의 짧은 세그먼트로 나누고, 이를 매니페스트에 나열합니다. 플레이어는 세그먼트를 순서대로 가져오며, 연결 상태가 나빠지면 재생이 멈추는 대신 낮은 화질 버전을 요청하기 시작합니다.

이를 위해서는 각 세그먼트를 독립적으로 디코딩할 수 있어야 합니다. 47번 세그먼트가 1번 세그먼트에만 있는 헤더에 의존해서는 안 됩니다. 플레이어가 47번부터 접속할 수도 있고, 46번과 47번 사이에서 화질을 전환할 수도 있기 때문입니다.

트랜스포트 스트림은 이미 정확히 이런 포맷이었습니다. 자체적으로 정보를 설명하고, 어디서든 시작할 수 있으며, 데이터 손실에도 강합니다. HLS는 세그먼트 포맷을 새로 만들 필요가 없었습니다. 웹에서 동영상이 사용되기 전부터 같은 문제를 해결해 온 방송 포맷을 그대로 물려받았기 때문입니다.

따라서 .m3u8 매니페스트를 열어 다음과 같은 항목이 보인다면:

#EXTINF:6.000,
segment000.ts
#EXTINF:6.000,
segment001.ts

이것들은 6초 길이의 트랜스포트 스트림 조각입니다. 스트림은 하나의 동영상이 아닙니다. 순서대로 요청되는 수천 개의 작은 동영상입니다. (이 때문에 스트림을 MP4로 간단히 "변환"할 수 없는 이유.)

.TS와 .MP4 비교

.ts (MPEG-TS).mp4
형태연속적인 패킷 흐름헤더가 있는 인덱싱된 파일
어디서든 시작할 수 있나?아니요 — 헤더가 필요함
데이터 손실을 견디나?, 다음 패킷에서 재동기화손상되면 파일 전체가 깨질 수 있음
탐색느림, 인덱스 없음빠름, 인덱싱됨
오버헤드높음 (헤더가 계속 반복됨)낮음
용도방송 및 라이브 스트리밍완성된 파일의 저장 및 재생

어느 쪽이 더 낫다고 할 수는 없습니다. 서로 반대되는 문제를 해결하기 때문입니다. .ts전달되는 것에 최적화되어 있고, .mp4가만히 저장되는 것에 최적화되어 있습니다.

따라서 둘 사이의 변환은 원칙적으로 일상적이고 무손실입니다. 내부의 영상과 오디오는 동일할 수 있으며, 바뀌는 것은 포장 방식뿐입니다.

실제 환경에서 .TS 파일을 접하는 경우

  • HLS 스트림 내부. 앞서 설명한 세그먼트입니다. 플레이어가 가져온 뒤 버리므로 개별 세그먼트를 직접 보게 되는 일은 없습니다.
  • output=ts가 포함된 Xtream 방식 소스에서. 이 매개변수는 서버에 세그먼트로 나뉜 HLS 대신 원시 트랜스포트 스트림을 요청합니다. (이러한 URL이 만들어지는 방식.)
  • 방송 캡처 하드웨어에서. 튜너, 캡처 카드, 레코더는 공중파로 들어온 형식 그대로인 경우가 많기 때문에 .ts를 직접 기록하는 경우가 많습니다.
  • 블루레이 디스크에서, .m2ts 형식으로 저장됩니다. 이는 트랜스포트 스트림과 유사한 형식입니다.
  • 캠코더에서, 특히 .m2ts를 사용하는 AVCHD 모델에서 볼 수 있습니다.

.TS 파일이 재생되지 않을 때

흔히 발생하는 문제이며, 대개 다섯 가지 중 하나입니다.

1. 파일 연결이 설정되지 않음. Windows와 macOS에는 .ts용 처리 프로그램이 기본으로 포함되어 있지 않습니다. 더블 클릭해도 아무 일도 일어나지 않거나 적절하지 않은 프로그램이 열립니다. 파일이 손상된 것이 아니며, 파일에는 문제가 없습니다. 대신 플레이어 내부에서 파일을 열어 보세요.

더 곤란한 경우도 있습니다. 일부 시스템에서는 .ts가 코드 편집기에 연결되어 있는데, TypeScript 소스 파일에도 같은 확장자가 사용되기 때문입니다. 동영상이 텍스트 편집기에서 열리는 것은 혼란스러울 뿐, 무해합니다.

2. 컨테이너가 아니라 내부 코덱 문제. .ts는 포장 형식입니다. 내부에는 MPEG-2(구형 방송), H.264 또는 HEVC가 들어 있을 수 있습니다. 기기가 해당 코덱을 디코딩하지 못한다면 컨테이너는 중요하지 않습니다. 대표적인 증상은 오디오는 재생되지만 화면이 검은색으로 나오는 것입니다. (화면은 검은색인데 오디오는 나오는 경우.)

MPEG-2가 흔한 원인입니다. 매우 오래된 코덱이라 일부 최신 기기에는 더 이상 디코더가 포함되지 않습니다. 이제는 필요할 것이라고 생각하는 사람이 없기 때문입니다.

3. 특이한 오디오 형식. 방송용 트랜스포트 스트림에는 AC-3, E-AC-3 또는 DTS 오디오가 자주 포함됩니다. 영상은 재생되지만 소리가 나지 않는다면 오디오 코덱이나 패스스루 문제이지, 컨테이너 문제는 아닙니다. (소리가 나지 않을 때의 해결 방법.)

4. 중간에 끊긴 캡처. 저장 도중 중단된 캡처는 불완전한 파일을 만듭니다. 트랜스포트 스트림은 성능이 점진적으로 저하되므로 일반적으로 끊긴 지점까지는 재생됩니다. 파일 자체가 열리지 않을 수도 있는 MP4보다 확실한 장점 중 하나입니다.

5. 탐색이 느려 고장처럼 보이는 경우. 인덱스가 없기 때문에 플레이어가 큰 .ts 파일에서 위치를 이동하려면 내용을 스캔해야 합니다. 대용량 트랜스포트 스트림 파일에서 탐색이 느린 것은 정상적인 동작이며, 오류가 아닙니다.

어떤 프로그램으로 열 수 있나

데스크톱에 있는 .ts 파일이라면 범용 플레이어로도 잘 처리할 수 있습니다. VLCmpv가 대표적인 선택지이며, 두 프로그램 모두 문제가 있는 파일을 포함해 트랜스포트 스트림을 직접 엽니다. 이것이 두 프로그램이 특히 잘하는 작업입니다.

네트워크를 통해 트랜스포트 스트림으로 전달되는 스트림output=ts가 포함된 Xtream 소스, .ts 세그먼트로 구성된 HLS 재생목록, LAN에 연결된 기기 — 을 재생하는 것은 플레이어의 핵심 기능이며, Tuneline는 macOS, Windows, Linux, iPhone, iPad, Android, Android TV, Google TV 및 Apple TV에서 이를 처리합니다.

중요한 구분이므로 정확히 짚고 넘어가겠습니다. Tuneline는 로컬 동영상 파일이 아니라 재생목록과 스트림을 엽니다. 하드 드라이브에 .ts 녹화 파일이 있다면 VLC 또는 mpv를 사용하세요. 네트워크를 통해 트랜스포트 스트림이 들어오는 경우에는 Tuneline가 이를 위해 설계된 플레이어입니다.

output=tsoutput=m3u8 중 무엇을 선택할까

소스에서 선택할 수 있다면 — Xtream 방식 소스에서는 가능합니다 — 이 내용을 알아두는 것이 좋습니다. 재생 문제가 많이 해결되기 때문입니다.

**output=ts**는 연속적인 원시 스트림을 제공합니다. 호환성이 가장 넓어 거의 어디서나 작동하지만, 적응형 비트레이트는 지원하지 않습니다. 연결 상태가 좋지 않으면 화질이 낮아지는 대신 재생이 멈춥니다.

**output=m3u8**는 세그먼트로 나뉜 HLS를 제공합니다. 스트림 중간에 플레이어가 낮은 화질로 전환할 수 있으므로 불안정한 연결에서 더 안정적으로 작동하며, 일반적으로 모바일 네트워크에도 더 적합합니다.

실용적인 조언: 휴대폰이나 불안정한 Wi-Fi에서는 먼저 m3u8를 시도하고, 아예 재생되지 않을 때는 ts을 시도해 보세요. 매개변수 하나만 바꾸면 되며, 이 간단한 변경으로 "재생되지 않는다"는 문제의 상당 부분이 해결됩니다. (스트림이 끊기는 이유와 실제 해결 방법.)

핵심 정리

  • .ts는 방송용으로 만들어진 MPEG 트랜스포트 스트림입니다. 어느 순간에든 접속할 수 있는 연속적인 패킷 흐름입니다.
  • HLS가 이를 채택한 이유는 스트리밍에 독립적으로 디코딩할 수 있는 세그먼트가 필요하기 때문이며, 트랜스포트 스트림은 원래부터 정확히 그런 구조였습니다.
  • 라이브 스트림은 하나의 파일이 아니라 수천 개의 짧은 .ts 세그먼트로 구성됩니다.
  • .ts는 어디서든 시작할 수 있고 손상에도 견디며, .mp4는 빠른 탐색과 효율적인 저장에 적합합니다. 용도가 서로 다릅니다.
  • 재생이 실패하는 원인은 대개 컨테이너가 아니라 내부 코덱(MPEG-2, HEVC, AC-3)입니다.
  • 대용량 .ts에서 탐색이 느린 것은 정상입니다. 인덱스가 없기 때문입니다.

네트워크를 통해 전송 스트림이 들어오나요? Tuneline을 다운로드하세요. 무료이며, 번들 콘텐츠 없이 모든 플랫폼에서 사용할 수 있습니다.

이 글 공유하기

The fast fix

Get Tuneline free

A clean, no-account media player for macOS, Windows, Linux, Android, TV, and iOS. Bring your own playlist.

Download free

The cross-platform media player behind these answers — new platforms, sync updates, the honest build story. No spam, unsubscribe anytime.

다른 언어로 이 글 읽기

Tuneline은 미디어 플레이어 애플리케이션입니다. 어떤 콘텐츠도 제공하거나 호스팅하거나 배포하지 않습니다. 재생목록은 VLC와 마찬가지로 사용자가 직접 준비합니다.