Converting your videos from MOV format to HLS format has several benefits, including scalability and a better viewer experience—particularly for live streaming.
MOV format (noted with the .mov extension) was originally developed by Apple as a container file, similar to a MP4. Unlike MP4s, the MOV file type was created and optimized as the preferred file format for Apple QuickTime. HTTP live streaming, also known as HLS, is an adaptive bitrate streaming protocol—also created by Apple—which scales video quality up and down depending on the strength of the network connection.
Read this article to learn how to convert MOV files to a HLS format. In a hurry? Skip ahead to step-by-step instructions.
Top 3 advantages to HLS format and adaptive bitrate streaming
There are many advantages to adaptive bitrate streaming, particularly HLS, but these are the top three reasons we suggest you use the HLS format over the MOV format:
- HLS players are available on major platforms: HLS is an industry-standard format and can play almost everywhere. Some examples of HLS web players are Mux video element, HLS.js, and Plyr.io.
- Uses common video formats: HLS uses existing video formats like MP4, TS, codecs like H.264, and AAC.
- More scalable than other protocols: HLS works over HTTP, which means no special servers are necessary.
Read more about mobile video streaming with HLS in this Mux resource guide.
When to use HLS over MOV formats: What’s the difference?
MOV files are a container format that store multimedia information like audio, video, and text. Because they contain a lot of information, the file size is generally much larger than a MP4 file.
HLS format, on the other hand, is an adaptive bitrate streaming protocol. Instead of storing files in a container like an MOV file, HLS breaks down video files into many pieces. The video player can access these files throughout the duration of the video stream. Because of its scalability, the HLS format is popular for live streaming.
When to use MOV files
MOV files are optimized for the Apple QuickTime application and often used for video editing purposes. Because the file type was created specifically for Apple applications, you’ll need to convert the file to another file type to open it in other applications outside the Apple universe.
Use cases for MOV files:
- Video editing on Apple devices: MOV files are optimized for Apple QuickTime, so this format makes the most sense when you’re editing video on Apple devices. With less compression than MP4s, the video quality also tends to be slightly higher.
When to use HLS
If you’re expecting high volumes of traffic to your video, like for a live stream or event, HLS is your best bet. HLS is the preferred format for live streaming because it can adapt the video quality to suit network conditions. For example, if someone was streaming video on their phone and their network connectivity was slower than usual, the video would continue to play uninterrupted, with a slight decrease in quality.
Use cases for HLS:
- Interactive video streams: HLS makes sense for interactive streaming use cases on community platforms like Twitch where there are a lot of people interacting with the video content. The Twitch developer team even wrote a blog post on this topic.
- High-visibility streaming events: Use HLS for video streams where you expect a lot of viewers. This includes live streams for concerts or sporting events like the Rugby World Cup.
- Streaming on Apple devices: All iOS devices require HLS for streaming. Android also now supports HLS for other mobile devices.
Active Theory used a HLS stream to create a digital auditorium for virtual concerts during the COVID-19 pandemic.
What is ffmpeg?
The most popular way to convert MP4 files to HLS files is by using ffmpeg.
Ffmpeg is a piece of open source software used to modify media files. Officially, the ffmpeg website defines ffmpeg as “a complete, cross-platform solution to record, convert, and stream audio and video…able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.“ In simple terms, ffmpeg helps you transcode media files into a simplified format, allowing for more efficient video streaming.
A brief history of ffmpeg
The ffmpeg open source project was founded in the year 2000 by Fabrice Bellard and has continuously evolved over the years. Ffmpeg stands for “Fast Forward Moving Picture Experts Group.” Large organizations like Google use the ffmpeg project package in applications and open source libraries like Google Chrome, MPlayer, and VLC. In 2014, Google even conducted an internal fuzzing effort where they fixed over a thousand bugs in the ffmpeg project over the course of two years. Ffmpeg continues to be one of the most popular—if not the most popular—solution for processing media files.
How to convert MOV to HLS with ffmpeg: Step-by-step instructions
1. Install ffmpeg
See the download page for ffmpeg to install ffmpeg for your operating system.
2. Convert MP4 video file to HLS with ffmpeg
ffmpeg -i filename.mov \
-codec: copy \
-hls_time 10 \
-hls_list_size 0 \
-f hls \
filename.m3u8There's a number of ffmpeg settings and flags you can tweak here, let's break down what we have:
- -i this is the input file, where you point to your mp4
- -codec: copy will preserve the video & audio codecs of the original video. Which may or may not be what you need. The codec that you end up using will depend on which devices you want to support. Learn more about choosing the best video codec for your use case.
- -hls_time 10 this is the target duration of each HLS segment
- -f hls this tells ffmpeg to output the result in HLS format
- filename.m3u8 this is the output file for the HLS playlist -- m3u8 is the extension for an HLS playlist
This command will output a single filename.m3u8 HLS playlist, along with video segment files ending with .ts. This particular output has only one quality level of HLS output. For a production use case you will likely want to create multiple quality levels of HLS output.
If you've made it this far, you might be interested in the Mux Video API to convert MOV files to HLS.
Learn more about Mux VideoHow to host and deploy your HLS stream
Now that you’ve converted your MP4 into a HLS file, you’ll need to host these new files. Hosting your HLS files, also known as deploying your HLS stream, requires a few steps.
The basic idea is that you'll need to put the HLS files onto a server that can deliver them to clients over HTTP. This can be as simple as an Amazon S3 bucket or your own static file server. One thing to keep in mind is that regardless of where you host the HLS files, you will likely need to put a CDN in front of it for caching which will give you better performance for users and lower costs.
How to play your HLS video
Once you’ve hosted your HLS stream, you need a way for people to view your video. HLS is supported by different media players for different applications.
Web
- Safari on MacOS supports HLS natively in the HTML5 video tag without any extra code or configuration.
- Other browsers including Chrome, Internet Explorer and Firefox require Javascript code with a library like Hls.js or http-streaming. These libraries use the browser's Media Source Extension API to add HLS support to the HTML5 video element.
iOS apps
- iOS / TVOS / iPadOS apps all support HLS with Apple's AVPlayer
Android apps
- Android apps support HLS with Media3 ExoPlayer
What's next with Mux
After you get your HLS video set up and streaming make sure to monitor your users' quality of experience.
If you are looking for an API to convert MP4 videos or any other video type into HLS for streaming, see the getting started guide to start streaming video over HLS with Mux.
MOV to HLS conversion FAQs
Why convert MOV to HLS instead of just using MOV files?
MOV is a container format optimized for Apple QuickTime and video editing, not web streaming. HLS is an adaptive bitrate streaming protocol that creates multiple quality versions and adjusts playback based on viewer network conditions. MOV files are typically large and don't adapt to bandwidth changes, causing buffering on slower connections. For any web streaming—especially to diverse audiences—HLS provides dramatically better viewer experience than serving MOV files directly.
Do I need to convert MOV to MP4 before converting to HLS?
No. FFmpeg can convert MOV directly to HLS in one step. MOV and MP4 are both container formats and often contain the same codecs (H.264 video, AAC audio). The -codec copy flag preserves the original codecs during conversion, making it fast. However, if you need to change codecs or resolutions, FFmpeg will re-encode during the MOV to HLS conversion.
What's the difference between MOV and MP4?
MOV and MP4 are both container formats that can hold the same video and audio codecs. MOV was created by Apple for QuickTime and is optimized for video editing with less compression. MP4 is a more universal format with better compression and wider compatibility. For most purposes, they're interchangeable—you can often just rename .mov to .mp4 and it'll work, assuming the codecs inside are MP4-compatible.
Can I create adaptive bitrate HLS from a single MOV file?
Yes, but it requires FFmpeg to generate multiple quality renditions from your source MOV. The basic command shown creates only one quality level. For adaptive bitrate, you need a more complex FFmpeg command that creates multiple resolutions (1080p, 720p, 480p) with appropriate bitrates, along with a master playlist that references all renditions. This is significantly more complex—most developers use video platforms to handle this automatically.
Will converting MOV to HLS reduce video quality?
If you use -codec copy, quality is preserved exactly since no re-encoding occurs—FFmpeg just repackages the video into HLS segments. If you re-encode (to change resolution, codec, or bitrate), some quality loss occurs with lossy codecs. To minimize loss, always convert from the highest quality MOV source available and use appropriate bitrate settings for your target quality level.
Why do iOS devices require HLS for streaming?
Apple mandates HLS for HTTP streaming on iOS to ensure consistent quality of experience and enable adaptive bitrate streaming. This requirement has been in place since iOS 3.0 and applies to any video stream over cellular networks or lasting longer than 10 minutes. The policy drove HLS adoption industry-wide, making it the de facto standard for web streaming beyond just Apple devices.
How long does MOV to HLS conversion take?
With -codec copy (no re-encoding), conversion is very fast—just seconds for most videos since FFmpeg only segments the file. If re-encoding is needed, time depends on video length, resolution, codec complexity, and your hardware. A 10-minute 1080p video might take 2-5 minutes to re-encode with H.264 on modern hardware, longer with more efficient codecs like H.265 or AV1.
Can video platforms handle MOV files or do I need to convert first?
Most video platforms (including Mux) accept MOV files directly and handle all conversion automatically. They'll transcode your MOV into HLS with multiple quality renditions, optimize for delivery, and provide playback URLs. Manual conversion with FFmpeg only makes sense if you're self-hosting and managing your own video infrastructure without a transcoding service.