Crate mp4

Source
Expand description

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().values() {
       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
BoxHeader
Bytes
A cheaply cloneable and sliceable chunk of contiguous memory.
EmsgBox
FixedPointI8
FixedPointU8
FixedPointU16
FourCC
FtypBox
HevcConfig
MoofBox
MoovBox
Mp4Config
Mp4Reader
Mp4Sample
Mp4Track
Mp4Writer
Ratio
Represents the ratio between two numbers.
TrackConfig
TtxtConfig
Vp9Config

Enums§

AudioObjectType
AvcProfile
BoxType
ChannelConfig
DataType
Error
MediaConfig
MediaType
MetadataKey
SampleFreqIndex
TrackType

Constants§

HEADER_EXT_SIZE
HEADER_SIZE

Traits§

Metadata
Mp4Box
ReadBox
WriteBox

Functions§

box_start
creation_time
read_box_header_ext
read_mp4
skip_box
skip_bytes
skip_bytes_to
write_box_header_ext
write_zeros

Type Aliases§

Result