Packaging

Last update:2026-07-15 18:17:46

Media Packaging allows you to transform the container format of your audio and video files without changing their content quality. This process helps preserve media integrity while adapting files to different delivery requirements.

Supported Formats

Atomile supports a wide range of media formats.

Video Formats:

  • MP4, FLV, HLS, DASH, TS, MKV, MOV
  • WMV, AVI, VP8, VP9, RealVideo, Windows Media Video

Audio Formats:

  • AAC, AC-3, MP1, MP2, MP3
  • PCM, RealAudio, Windows Media Audio (WMA), OGG

Storage Optimization

For streaming formats such as HLS and DASH, Atomile supports segment sharing across manifests. This means that your .mpd (DASH) and .m3u8 (HLS) files can share identical segments, significantly reducing storage usage in Object Storage.

How to Use

Structure your fops command as shown below:

<op>/<Format>
    /vn/<value>
    /an/<value>
    /segtime/<value>
    /fastStartSeg/<value>
    /dash_hls_playlist/<value>
    /segtype/<value>
|saveas/<Urlsafe_Base64_Encode(bucket:savedfilename)>

Parameters

Parameter Required Description
op Yes Operation type. Use avthumb for packaging.
format Yes Target format, such as mp4, flv, m3u8, or mpd.
an No Audio track control:
0 (default) - Keep the audio track
1 - Remove the audio track
vn No Video content control:
0 (default) - Keep the video content
1 - Remove the video content
segtime No Segment duration for HLS and DASH in seconds. Supported range: 1 to 120.

Default behavior:
• For non-m3u8/mpd inputs: 10-second segments
• For m3u8/mpd inputs without transcoding: only the manifest is generated
• For m3u8/mpd inputs with transcoding: the system calculates the duration dynamically
fastStartSeg No HLS only. Sets shorter initial segments for faster playback startup.
Format: MxNs, where:
M = number of segments
N = duration in seconds

Example: 5x3s creates five 3-second segments at the beginning.
segtype No DASH only. Defines the output format of DASH segments:
mp4 - MP4 segments
m4s (default) - M4S segments
dash_hls_playlist No Controls whether an HLS playlist is generated from DASH content:
1 - Generate both MPD and M3U8 files for cross-platform compatibility
0 (default) - Generate only the MPD file for DASH-focused delivery
saveas Yes Output location as a URL-safe Base64-encoded string, in the format Urlsafe_Base64_Encode(bucket:savedfilename).

Examples

Example 1: Convert FLV to MP4

This example packages a video named test.flv from the vod-test001 bucket into MP4 format.

Pseudocode:

curl -v -X POST \
  -d "bucket=Urlsafe_Base64_Encode(vod-test001)&key=Urlsafe_Base64_Encode(test.flv)&fops=Urlsafe_Base64_Encode(avthumb/mp4|saveas/Urlsafe_Base64_Encode(vod-test001:test.mp4))&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "http://mgrDomain/fops"

Actual Request:

curl -v -X POST \
  -d "bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5mbHY=&fops=YXZ0aHVtYi9tcDR8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViWEEw&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "http://mgrDomain/fops"

Example 2: Convert MP4 to HLS

This example packages a video named test.mp4 into HLS format with 15-second segments.

Pseudocode:

curl -v -X POST \
  -d "bucket=Urlsafe_Base64_Encode(vod-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/m3u8/segtime/15|saveas/Urlsafe_Base64_Encode(vod-test001:test.m3u8))&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "http://mgrDomain/fops"

Actual Request:

curl -v -X POST \
  -d "bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tM3U4L3NlZ3RpbWUvMTV8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViVE4xT0E9PQ==&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "http://mgrDomain/fops"

Example 3: Convert MP4 to DASH

This example packages a video named test.mp4 into DASH format.

Pseudocode:

curl -v -X POST \
  -d "bucket=Urlsafe_Base64_Encode(vod-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/mpd|saveas/Urlsafe_Base64_Encode(vod-test001:test.mpd))&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "http://mgrDomain/fops"

Actual Request:

curl -v -X POST \
  -d "bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tcGR8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViWEJr&force=1&separate=1" \
  -H "Authorization: AccessKey:EncodeSign" \
  --url "http://mgrDomain/fops"