Convert TS to CAF — Free Online Tool

Convert MPEG-2 Transport Stream (TS) files to Apple's Core Audio Format (CAF) by extracting the audio track and encoding it as uncompressed PCM (pcm_s16le) — the native lossless format preferred by macOS and iOS audio frameworks. Ideal for pulling broadcast audio into Apple development or production pipelines.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

MPEG-2 Transport Stream files are broadcast containers that multiplex video, audio (commonly AAC or AC3), and subtitle streams together. During this conversion, FFmpeg discards the video and subtitle streams entirely and extracts only the audio. That audio is then re-encoded into 16-bit signed little-endian PCM (pcm_s16le) and wrapped in a CAF container. Unlike a simple remux, the audio codec is actively transcoded — the compressed broadcast audio (e.g., AAC or AC3 from the TS file) is fully decoded and re-encoded as raw, uncompressed PCM. The CAF container is Apple's successor to AIFF, designed to handle large files and integrate cleanly with Core Audio on macOS and iOS.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg tool. In this browser-based tool, the same command runs via FFmpeg.wasm (a WebAssembly port) directly in your browser — no server involved. You can also run this exact command in a local FFmpeg installation for files over 1GB.
-i input.ts Specifies the input MPEG-2 Transport Stream file. FFmpeg reads all multiplexed streams (video, audio, subtitles) from the TS container and makes them available for mapping and encoding.
-c:a pcm_s16le Sets the audio codec to 16-bit signed little-endian PCM — uncompressed audio that is natively supported by Apple's Core Audio framework. This transcodes whatever compressed audio format (AAC, AC3, MP3, etc.) was in the TS file into raw PCM samples for lossless storage in the CAF container.
-b:a 128k Specifies a 128k audio bitrate target. For pcm_s16le this flag has no effect since PCM is uncompressed and its bitrate is fixed by sample rate and channel count — but it is included here for reference if you switch to a compressed CAF codec like AAC.
output.caf Defines the output file as a Core Audio Format (.caf) container. FFmpeg infers from the .caf extension that it should write an Apple CAF file, automatically dropping the video and subtitle streams from the TS input since CAF is an audio-only container.

Common Use Cases

  • Extracting the audio track from a recorded broadcast TV stream (.ts file from a DVR) to import into Logic Pro or GarageBand on macOS as an uncompressed audio asset
  • Pulling audio from an HLS-captured transport stream to use as a sound effect or voiceover in an iOS or macOS app, where CAF is the natively supported audio container for Core Audio APIs
  • Converting broadcast AC3 or AAC audio embedded in a TS file to lossless PCM in CAF for archival or mastering purposes without any further lossy compression
  • Preparing audio from a recorded live stream (e.g., a sports broadcast captured as .ts) for editing in Final Cut Pro, which handles CAF natively
  • Decoding compressed multi-track broadcast audio from a TS file down to a single uncompressed PCM CAF file for use as a reference audio track in audio synchronization workflows
  • Extracting clean audio from a transport stream recorded off a satellite or cable tuner to supply as a raw PCM source for automated speech recognition or transcription tools running on Apple platforms

Frequently Asked Questions

Not higher quality — but it will be losslessly preserved from the decoded source. The TS file typically carries compressed audio (AAC or AC3), and converting it to pcm_s16le in CAF means the audio is fully decoded to uncompressed PCM. You won't recover any quality lost during the original broadcast compression, but you won't introduce any additional lossy artifacts either. The result is a lossless PCM representation of whatever quality the TS audio contained.
The video stream is dropped entirely. CAF is a pure audio container — it has no support for video — so FFmpeg automatically omits the video when writing to a .caf output. You only get the audio. If your TS file had multiple audio tracks, only the first (default) audio stream is extracted unless you specify otherwise in the FFmpeg command.
AC3 audio embedded in a TS file is fully supported. FFmpeg decodes the AC3 stream and re-encodes it as 16-bit PCM in the CAF container. The channel layout (e.g., 5.1 surround) will be preserved if the downstream tool and CAF reader support it, though some Apple tools may downmix multi-channel PCM. If your goal is to preserve surround channels, verify that your target application handles multi-channel CAF files before relying on this output.
This is expected. Broadcast TS files use compressed audio codecs like AAC or AC3, which can achieve compression ratios of 10:1 or more. The CAF output uses uncompressed pcm_s16le — raw audio samples — so a 5-minute stereo audio track at 44.1 kHz will occupy roughly 50 MB as PCM, compared to perhaps 4–5 MB as AAC. If file size is a concern, consider choosing a compressed CAF codec like AAC or FLAC instead of PCM.
Replace '-c:a pcm_s16le' with '-c:a flac' for lossless FLAC compression (significantly smaller than PCM while still lossless), or '-c:a aac' for lossy AAC compression. For AAC, also pass '-b:a 192k' (or your preferred bitrate) to control quality. For example: 'ffmpeg -i input.ts -c:a flac output.caf'. Both FLAC and AAC are valid codecs inside the CAF container and are supported by Core Audio on macOS and iOS.
Yes. On macOS or Linux, use a shell loop: 'for f in *.ts; do ffmpeg -i "$f" -c:a pcm_s16le "${f%.ts}.caf"; done'. On Windows Command Prompt, use: 'for %f in (*.ts) do ffmpeg -i "%f" -c:a pcm_s16le "%~nf.caf"'. This processes each TS file in the current directory and saves the corresponding CAF output with the same base filename. The in-browser tool processes one file at a time, so the FFmpeg command is especially valuable for bulk workflows.

Technical Notes

CAF uses pcm_s16le as its default audio codec in this tool, meaning 16-bit signed integers in little-endian byte order — the standard uncompressed audio representation compatible with all Core Audio APIs on macOS and iOS. TS files from broadcast sources often contain audio at 48 kHz (broadcast standard), and FFmpeg preserves the original sample rate when writing to CAF unless you explicitly resample with '-ar'. Metadata from the TS container (program name, broadcast timestamps, stream IDs) is not transferred to CAF, as CAF uses Apple's own metadata chunk format and TS metadata has no direct mapping. Subtitles embedded in the TS are silently discarded since CAF has no subtitle support. If the TS file contains multiple audio streams (e.g., a primary language track and a secondary commentary track), only the first stream is extracted by default; use '-map 0:a:1' to select a different audio track. The '-b:a 128k' flag in the command has no practical effect when using pcm_s16le because PCM is uncompressed — bitrate is determined entirely by sample rate and bit depth, not a bitrate target. File sizes for PCM CAF output should be estimated at approximately (sample_rate × bit_depth × channels × duration_seconds) / 8 bytes.

Related Tools