Skip to content

storyboardcreativity/tiny-mov-library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

Tiny MOV Loader and Writer library

Header-only simple&limited MOV (Apple QuickTime Movie) loader in C++.

Features

  • Opening existing MOV files
  • Editing opened MOV info before writing
  • Writing new MOV files (remuxing)
    • Runtime handler support for chunk data
    • Runtime handler support for video sample description
  • Some MOV info is supported
    • Tracks info
      • Track media info
        • Type (Audio/Video/Timecode/...)
        • Chunk offsets in MOV file
        • Sample sizes in MOV file
        • Sample-to-Chunk info
        • Time-to-Sample info
        • Sample Description Extensions
          • zraw
    • Metadata info
  • Atoms supported for reading/writing (not checked - skipped for now):
    • ftyp
    • jpeg
    • RECO
    • free
    • moov
      • mvhd
      • trak
        • tkhd
        • edts
        • tref
        • mdia
          • mdhd
          • hdlr
          • minf
            • vmhd (for video)
            • smhd (for audio)
            • gmhd (for timecode)
              • gmin
              • tcmd
                • tcmi
            • hdlr
            • dinf
              • dref
            • stbl
              • stsd
              • stts
              • stss
              • sdtp
              • stsc
              • stsz
              • stco
      • meta
        • hdlr
        • keys
        • mdta
        • ilst
      • udta
    • wide
    • mdat

Usage

#include "TinyMovFileReader.hpp"

int main()
{
    // Create temporary reader
    TinyMovFileReader reader;

    // Here file is opened, parsed to abstractions and closed
    auto mov = reader.OpenMovFile("./example_0_93.ZRAW");

    // Show tracks count
    std::cout << "Tracks: " << mov.Tracks().size() << std::endl;

    // Process tracks
    for (int i = 0; i < mov.Tracks().size(); ++i)
    {
        auto& track = mov.Tracks()[i];

        // ... (here you do any stuff with tracks)
    }

    return 0;
}

Resource

TODO

  • ".ZRAW" encrypted MOV files support
  • Improve MOV reader
    • Support more atoms
  • Support Big MOV (4GB+)
  • MOV writer
  • Allow MOV file repack (MOV -> TinyMovReader -> TinyMovWriter -> MOV)

License

TinyMovFileReader is licensed under MIT license.

About

Tiny MOV loader/writer library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages