---
name: "ogmcat"
section: "1"
platform: "linux"
package: "ogmtools"
version: "1.5-12"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ogmcat"
---

# ogmcat(1)

Concatenate several OGG/OGM files into one big OGG/OGM file

## NAME

ogmcat - Concatenate several OGG/OGM files into one big OGG/OGM file

## SYNOPSIS

**ogmcat** \[*options*\] -o *outname* *inname1* \[*inname2* \[*inname3* ...\]\]

## DESCRIPTION

**ogmcat does NOT work at the moment. It is work in progress. I included it** **just out of laziness (otherwise I'd have to remove it from the** **Makefile/configure stuff prior to releasing this version).**

**ogmcat** can be used to concatenate several OGG/OGM files into one big file if they are of the same type. For a more in-depth description refer to the **LIMITATIONS** section.

- **-o**, **--output** *outname*

  Output to '*outname*'.

- inname1

  Use '*inname1*', '*inname2*' etc as the sources.

- **-m**, **--manualsync** *n*

  Specifies a manual sync value in ms that will be added to each stream's presentation timestamps along with the value calculated by the chosen sync algorithm (see the **-s** option). This option can be used for each input file although it has no effect if used for the first one as well.

- **-s**, **--sync** *nr*

  Uses sync mode *nr*. Valid values are 0 - 4. The default value is shown on **ogmcat**'s help screen.

- **-n**, **--nosafetychecks**

  Disable the safety checks made prior to the concatenating. The resulting file may be unplayable. See the **LIMITATIONS** section for further details.

- **-v**, **--verbose**

  Be verbose and show each OGG packet. Can be used twice to increase verbosity.

- **-h**, **--help**

  Show this help.

- **-V**, **--version**

  Show version information.

## LIMITATIONS

Concatenating streams is difficult at the best and might even be impossible. Therefore **ogmcat** makes very strict comparisons between the streams contained in the input files. The checks done include:

- \*

  general: All streams with the same serial number must be of the same type (video, audio, Vorbis audio or text streams).

- \*

  general: If a stream exists in one file it **must** in the other files as well.

- \*

  video streams: The codec FourCC, width, height and FPS must match.

- \*

  Vorbis streams: The sample rate and the number of channels must match.

- \*

  other audio streams: The codec ID, sample rate, bits per sample and number of channels must match.

- \*

  text/subtitle streams: The 'time unit' must match.

The user can forcefully override the last four checks with the **-n** parameter. The checks marked as 'general' cannot be overridden this way.

Audio/video synchronization might not be ok in the resulting file even if the source files were perfectly in sync. The user can experiment with the **-s** parameter which causes **ogmcat** to use slightly different algorithms for calculating the granulepos values for the audio and text streams. The range of valid parameters will be printed on **ogmcat**'s help screen.

If none of the synchronization algorithms provided works correctly then the user can also manually add a synchronization offset using the **-m** option for each input file.

## AUTHOR

*ogmcat* was written by Moritz Bunkus \<moritz@bunkus.org\>.

## SEE ALSO

[**ogmmerge**(1)](/ogmmerge/1.md), [**ogminfo**(1)](/ogminfo/1.md), [**ogmdemux**(1)](/ogmdemux/1.md), [**ogmsplit**(1)](/ogmsplit/1.md), [**dvdxchap**(1)](/dvdxchap/1.md)

## WWW

The newest version can always be found at \<http://www.bunkus.org/videotools/ogmtools/\> ⟨http://www.bunkus.org/videotools/ogmtools/⟩
