Crate mp4[][src]

mp4 is a Rust library to read and write ISO-MP4 files.

This package contains MPEG-4 specifications defined in parts:

  • ISO/IEC 14496-12 - ISO Base Media File Format (QuickTime, MPEG-4, etc)
  • ISO/IEC 14496-14 - MP4 file format
  • ISO/IEC 14496-17 - Streaming text format

See: mp4box for supported MP4 atoms.

Example

use std::fs::File;
use std::io::{BufReader};
use mp4::{Result};

fn main() -> Result<()> {
    let f = File::open("tests/samples/minimal.mp4").unwrap();
    let size = f.metadata()?.len();
    let reader = BufReader::new(f);

    let mp4 = mp4::Mp4Reader::read_header(reader, size)?;

    // Print boxes.
    println!("major brand: {}", mp4.ftyp.major_brand);
    println!("timescale: {}", mp4.moov.mvhd.timescale);

    // Use available methods.
    println!("size: {}", mp4.size());

    let mut compatible_brands = String::new();
    for brand in mp4.compatible_brands().iter() {
        compatible_brands.push_str(&brand.to_string());
        compatible_brands.push_str(",");
    }
    println!("compatible brands: {}", compatible_brands);
    println!("duration: {:?}", mp4.duration());

   // Track info.
   for track in mp4.tracks().iter() {
       println!(
           "track: #{}({}) {} : {}",
           track.track_id(),
           track.language(),
           track.track_type()?,
           track.box_type()?,
       );
   }
   Ok(())
}

See examples for more examples.

Installation

Add the following to your Cargo.toml file:

[dependencies]
mp4 = "0.7.0"

Structs

AacConfig
AvcConfig
Bytes

A reference counted contiguous slice of memory.

FixedPointI8
FixedPointU8
FixedPointU16
FourCC
HevcConfig
Mp4Config
Mp4Reader
Mp4Sample
Mp4Track
Mp4Writer
Ratio

Represents the ratio between two numbers.

TrackConfig
TtxtConfig
Vp9Config

Enums

AudioObjectType
AvcProfile
ChannelConfig
Error
MediaConfig
MediaType
SampleFreqIndex
TrackType

Traits

Mp4Box

Functions

creation_time
read_mp4

Type Definitions

Result