Skip to main content

Crate mp4

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
Avc1Box
AvcConfig
BoxHeader
Bytes
A cheaply cloneable and sliceable chunk of contiguous memory.
Co64Box
CttsBox
DataBox
DinfBox
EdtsBox
ElstBox
EmsgBox
FixedPointI8
FixedPointU8
FixedPointU16
FourCC
FtypBox
HdlrBox
Hev1Box
HevcConfig
IlstBox
MdhdBox
MdiaBox
MehdBox
MfhdBox
MinfBox
MoofBox
MoovBox
Mp4Config
Mp4Reader
Mp4Sample
Mp4Track
Mp4Writer
Mp4aBox
MvexBox
MvhdBox
Ratio
Represents the ratio between two numbers.
SmhdBox
StblBox
StcoBox
StscBox
StsdBox
StssBox
StszBox
SttsBox
TfdtBox
TfhdBox
TkhdBox
TrackConfig
TrafBox
TrakBox
TrexBox
TrunBox
TtxtConfig
Tx3gBox
UdtaBox
VmhdBox
Vp09Box
Vp9Config
VpccBox

Enums§

AudioObjectType
AvcProfile
BoxType
ChannelConfig
DataType
Error
MediaConfig
MediaType
MetaBox
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