Convert TS to HEVC — Free Online Tool
Convert MPEG-2 Transport Stream (.ts) files to raw HEVC/H.265 bitstream (.hevc) using libx265, re-encoding the video for significantly smaller file sizes at comparable visual quality. This is ideal for archiving broadcast or streaming captures with state-of-the-art compression efficiency.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your TS file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
MPEG-2 Transport Stream files typically contain H.264 or H.265 video alongside AAC, AC-3, or MP3 audio, wrapped in a container designed for broadcast transmission resilience. Converting to a raw HEVC bitstream is a fundamentally different operation from a simple remux: the video is fully re-encoded using libx265 regardless of the original codec, and all audio tracks, subtitles, and transport stream metadata are discarded — a .hevc file is a naked video bitstream with no container. The encoder applies CRF-based rate control (default CRF 28) to produce a compressed H.265 stream that typically achieves the same perceptual quality as H.264 at roughly half the bitrate. Because .ts files from broadcast or DVR sources often carry redundant error-correction overhead and multiple service streams, the resulting .hevc file can be dramatically smaller.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg tool. In this browser-based tool, the same command runs inside FFmpeg.wasm (WebAssembly), producing byte-for-byte identical output to a local desktop FFmpeg installation. |
-i input.ts
|
Specifies the input MPEG-2 Transport Stream file. FFmpeg will demux all streams it finds — video, audio, subtitles, and service data — but only the video stream is carried through to the .hevc output by the subsequent flags. |
-c:v libx265
|
Selects the libx265 encoder for the output video stream, re-encoding whatever video codec was in the source .ts (commonly H.264 or MPEG-2 Video) into a modern H.265/HEVC bitstream for substantially improved compression efficiency. |
-crf 28
|
Sets the Constant Rate Factor to 28, which is libx265's default quality level. For HEVC, CRF 28 delivers perceptual quality roughly equivalent to H.264 at CRF 23, making it a sensible starting point for broadcast .ts content where file size reduction is the primary goal. |
-x265-params log-level=error
|
Passes the log-level=error parameter directly to the libx265 encoder, suppressing the verbose per-frame statistics that x265 prints by default. This keeps the console output readable without affecting the encoded video in any way. |
output.hevc
|
Specifies the output filename with the .hevc extension, telling FFmpeg to write a raw Annex B H.265 bitstream file with no container wrapper. The absence of a container means no audio, subtitles, or metadata from the source .ts will be present in this file. |
Common Use Cases
- Archiving DVR or broadcast recordings captured as .ts files while halving storage requirements compared to keeping the original H.264 stream
- Preparing raw HEVC bitstream files for academic or professional codec research, where a containerless stream is required as input
- Stripping audio, subtitles, and broadcast metadata from a transport stream to produce a clean video-only file for later re-muxing into MKV or MP4 with custom audio
- Compressing large .ts captures from IP-TV or HLS streams for long-term cold storage where playback compatibility is less critical than file size
- Generating a raw H.265 bitstream as an intermediate step in a professional encoding pipeline that ingests .hevc files directly
- Reducing the size of screen-recorded or captured broadcast .ts footage before re-wrapping it into a delivery container on a separate workstation
Frequently Asked Questions
No — a raw .hevc file is a containerless video bitstream and has no capacity to store audio, subtitles, chapters, or any metadata. All audio tracks (AAC, AC-3, MP3, etc.) and subtitle streams present in the transport stream are dropped entirely during this conversion. If you need to retain audio and subtitles, consider converting the .ts to a container format like MKV or MP4 instead, which can hold HEVC video alongside multiple audio and subtitle tracks.
Broadcast .ts files are commonly encoded with H.264 at CRF-equivalent qualities roughly corresponding to CRF 20–23 in x264 terms. Because H.265 at CRF 28 delivers perceptually similar quality to H.264 at CRF 23, the default CRF 28 setting is generally a sensible match — you get comparable visual fidelity at a much lower bitrate. However, heavily compressed broadcast sources or interlaced content may show more artifacts at CRF 28; lowering CRF to 23–25 will increase quality and file size if the source warrants it.
Yes. The -crf flag controls the quality-vs-size tradeoff for libx265. Valid values range from 0 (mathematically lossless) to 51 (extremely low quality), with lower numbers producing better quality and larger files. For high-quality archival of broadcast content, values between 18 and 22 are recommended; for space-efficient storage where minor quality loss is acceptable, 28–32 is a practical range. Simply replace '28' in '-crf 28' with your desired value, for example: ffmpeg -i input.ts -c:v libx265 -crf 22 -x265-params log-level=error output.hevc
By default, libx265 prints verbose per-frame encoding statistics to the console during encoding, which creates noisy output and can interfere with progress reporting in tools and scripts. The -x265-params log-level=error flag suppresses all x265 internal logging except genuine error messages, keeping the FFmpeg output clean while still alerting you to any real encoding failures. This flag has no effect on the quality or content of the output .hevc file.
Yes, you can loop over files using a shell one-liner. On Linux or macOS: for f in *.ts; do ffmpeg -i "$f" -c:v libx265 -crf 28 -x265-params log-level=error "${f%.ts}.hevc"; done — this processes every .ts file in the current directory and writes a matching .hevc file. On Windows Command Prompt: for %f in (*.ts) do ffmpeg -i "%f" -c:v libx265 -crf 28 -x265-params log-level=error "%~nf.hevc". The browser-based tool processes one file at a time, so the FFmpeg command is especially useful for batch jobs.
Raw .hevc bitstream files have limited player support compared to HEVC wrapped in an MKV or MP4 container. VLC and mpv can typically play .hevc files directly, but most consumer devices, smart TVs, and browser-based players expect a container format. If broad compatibility is important, re-mux the .hevc stream into an MP4 or MKV file after conversion using: ffmpeg -i output.hevc -c:v copy output.mp4 — this copies the bitstream without re-encoding and adds a compatible container in seconds.
Technical Notes
Transport stream files sourced from broadcast DVR, HLS capture, or IP-TV often contain interlaced video, which libx265 will encode as-is by default — if your source is interlaced (common in standard-definition broadcast .ts files), you may want to add a deinterlace filter such as -vf yadif before encoding to avoid combing artifacts in the output. The .hevc format carries no container-level metadata: timestamps, program IDs, service names, and stream identifiers present in the transport stream are all lost. The output is a raw Annex B H.265 bitstream, which is suitable as an archival intermediate but not as a final delivery format for most workflows. Because libx265 is significantly more computationally expensive than libx264, expect encoding times roughly 3–5× longer than an equivalent H.264 encode on the same hardware — a real consideration when processing long broadcast recordings in the browser via WebAssembly. The lossless encoding option (CRF 0) is available but will produce files larger than typical broadcast sources and is rarely practical. For 4K HDR .ts content captured from UHD broadcast, preserve HDR metadata by appending -x265-params "log-level=error:hdr-opt=1:repeat-headers=1" and copying the color primaries flags from the source.