mp4v2再学习 -- Linux 下安装说明

一、MP4v2 简介

首先官网上有这样的介绍:
C library and various command-line utilities which permit creation and modification of MP4 files

MP4v2 is an open source toolkit that provides an API to create and modify mp4 files as defined by ISO-IEC:14496-1:2001 MPEG-4 Systems.

This file format is derived from Apple's QuickTime file format that has been used as a multimedia file format in a variety of platforms and applications. It is a very powerful and extensible format that can accommodate practically any type of media.

MP4v2 was originally bundled with mpeg4ip library, but has been moved into its own maintained library due to a combination of the cessation of support of mpeg4ip and the usefulness of this library on its own.
翻译一下:
MP4V2 的前身是 MPEG4IP 开源项目中的一个功能库,但是现在 MPEG4IP 已经不在更新了。但是 MP4V2 还在更新,并且独立出来了。MP4V2 主要是作为 MP4 文件的录制一个开源库。
MPEG4IP 提供一个端对端的系统来实现音视频流的传输,支持包括 MPEG4/H.261/MPEG2/H.263/MP3/AAC/AMR等不同编码格式。现在关于Google相关的 code.google.com 已经无法打开了,因此只好提供下面的下载地址。
下载:mp4v2 package in Ubuntu
下载:Ubuntu_mp4v2_mp4  包含转MP4源码

二、MP4v2编译

Windows下编译安装,参看:MP4V2库与MP4AV库编译

1、查看 ./configure --help

# ./configure --help
`configure' configures MP4v2 2.0.0 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/mp4v2]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

Program names:
  --program-prefix=PREFIX            prepend PREFIX to installed program names
  --program-suffix=SUFFIX            append SUFFIX to installed program names
  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --disable-debug         disable debugging compilation
  --disable-optimize      disable optimizing compilation
  --disable-fvisibility   disable use of -fvisibility
  --disable-gch           disable GCC precompiled-headers
  --disable-largefile     disable LFS (large file support)
  --disable-util          disable build of command-line utilities
  --enable-bi=ARCH        enable -mARCH for bi-arch compilation
  --enable-ub[=ARCHS]     enable -arch ARCH for universal-binaries (OSX only)
  --enable-cygwin-win32   when building with Cygwin use -mwin32
  --enable-mingw-threads  when building with MinGW use -mthreads
  --disable-dependency-tracking  speeds up one-time build
  --enable-dependency-tracking   do not reject slow dependency extractors
  --enable-shared[=PKGS]  build shared libraries [default=yes]
  --enable-static[=PKGS]  build static libraries [default=yes]
  --enable-fast-install[=PKGS]
                          optimize for fast installation [default=yes]
  --disable-libtool-lock  avoid locking (might break parallel builds)

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-pic              try to use only PIC/non-PIC objects [default=use
                          both]
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]

Some influential environment variables:
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CC          C compiler command
  CFLAGS      C compiler flags
  CPP         C preprocessor
  CXXCPP      C++ preprocessor

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to <kidjan@gmail.com>.

2、编写脚本

#!/bin/bash
if [ "$1" == "" ]; then
    INSTALL_PATH=`pwd`/_install
else
    if [ -d $1 ]; then
        INSTALL_PATH=$1
    else
        exit 1
    fi
fi

if [ ! -d $INSTALL_PATH ]; then
    mkdir -p $INSTALL_PATH
fi

if [ -f config.log ]; then
    make distclean
fi

./configure --prefix=$INSTALL_PATH \
    --host=arm-none-linux-gnueabi \
    --build=i486-linux-gnu \
    --disable-option-checking \
    --enable-optimize \
    --disable-fvivibility \
    --disable-gch \
    --disable-largefile \
    --enable-util \
    --disable-cygmin-win32 \
    --disable-mingw-threads \
    --disable-dependency-tracking \
    --enable-shared=yes \
    --enable-static=no \
    --enable-fast-install=yes \
    --disable-libtool-lock \
    --with-gnu-ld

if [ $? -eq 0 ]; then
    make
    if [ $? -eq 0 ]; then
        make install
        exit 0
    fi
fi 

3、设置权限并执行脚本

# chmod 777 build.sh
# ./build.sh

4、查看生成文件

编译成功之后,会在 _install 目录中生成如下的文件夹,如下所示:

看看lib目录下是否有mp4v2的库,如下所示:


想要知道如何使用这个库,可以参考util目录下的应用代码,如下所示:

三、测试

1、查看视频信息

mp4info <file-name>
示例:
# ./mp4info WUKELILI.mp4 
/home/tarena/project/mp4v2/mp4v2-2.0.0/.libs/lt-mp4info version 2.0.0
WUKELILI.mp4:
Track	Type	Info
1	video	H264 Main@3, 178.391 secs, 678 kbps, 768x432 @ 23.000039 fps
2	audio	MPEG-4 AAC LC, 178.432 secs, 94 kbps, 24000 Hz
 Artist: yinyuetai.com
 Release Date: 01/30/13 20:51:30
 Album: Yinyuetai
 Comments: Yinyuetai Fukai

2、列出mp4的所有轨迹

mp4track [OPTION]... [PARAMETERS]... ACTION file...
# ./mp4track --help
Usage: mp4track [OPTION]... [PARAMETERS]... ACTION file...

For each mp4 file specified, perform the specified ACTION. An action must be
specified. Some options are not applicable to some actions.

ACTIONS
     --list             list all tracks in mp4
     --enabled BOOL     set trak.tkhd.flags (enabled bit)
     --inmovie BOOL     set trak.tkhd.flags (inMovie bit)
     --inpreview BOOL   set trak.tkhd.flags (inPreview bit)
     --layer NUM        set trak.tkhd.layer
     --altgroup NUM     set trak.tkhd.alternate_group
     --volume FLOAT     set trak.tkhd.volume
     --width FLOAT      set trak.tkhd.width
     --height FLOAT     set trak.tkhd.height
     --language CODE    set trak.mdia.mdhd.language
     --hdlrname STR     set trak.mdia.hdlr.name
     --udtaname STR     set trak.udta.name.value
     --udtaname-remove  remove trak.udta.name atom
     --colr-list        list all colr-boxes in mp4
     --colr-add         add colr-box to a video track
     --colr-set         set colr-box parms
     --colr-remove      remove colr-box from track
     --pasp-list        list all pasp-boxes in mp4
     --pasp-add         add pasp-box to a video track
     --pasp-set         set pasp-box parms
     --pasp-remove      remove pasp-box from track

PARAMETERS
     --track-any        act on any/all tracks
     --track-index IDX  act on track index IDX
     --track-id ID      act on track id ID
     --colr-parms CSV   where CSV is IDX1,IDX2,IDX3
     --colr-parm-hd     equivalent to --colr-parms=1,1,1
     --colr-parm-sd     equivalent to --colr-parms=6,1,6
     --pasp-parms CSV   where CSV is hSPACING,vSPACING

OPTIONS
 -z, --optimize         optimize mp4 file after modification
 -y, --dryrun           do not actually create or modify any files
 -k, --keepgoing        continue batch processing even after errors
 -o, --overwrite        overwrite existing files when creating
 -f, --force            force overwrite even if file is read-only
 -q, --quiet            equivalent to --verbose 0
 -d, --debug NUM        increase debug or long-option to set NUM
 -v, --verbose NUM      increase verbosity or long-option to set NUM
 -h, --help             print brief help or long-option for extended help
     --version          print version information and exit

DEBUG LEVELS (for raw mp4 file I/O)
  0  supressed
  1  add warnings and errors (default)
  2  add table details
  3  add implicits
  4  everything

VERBOSE LEVELS
  0  warnings and errors
  1  normal informative messages (default)
  2  more informative messages
  3  everything
示例:
# ./mp4track --list WUKELILI.mp4 
track[0] id=1
  type           = video
  enabled        = true
  inMovie        = false
  inPreview      = false
  layer          = 0
  alternateGroup = 0
  volume         = 0.0000
  width          = 768.00000000
  height         = 432.00000000
  language       = UNDEFINED(0)
  handlerName    = 1359550061.h264#video:fps=23 - Imported with GPAC 0.5.0-rev4065
  userDataName   = <absent>
track[1] id=2
  type           = audio
  enabled        = true
  inMovie        = false
  inPreview      = false
  layer          = 0
  alternateGroup = 0
  volume         = 1.0000
  width          = 0.00000000
  height         = 0.00000000
  language       = UNDEFINED(0)
  handlerName    = GPAC ISO Audio Handler
  userDataName   = <absent>

3、以人类可读的格式转储MP4结构

mp4file [OPTION]... ACTION file...
# ./mp4file --help
Usage: mp4file [OPTION]... ACTION file...

For each mp4 file specified, perform the specified ACTION. An action must be
specified. Some options are not applicable to some actions.

ACTIONS
     --list         list (summary information)
     --optimize     optimize mp4 structure
     --dump         dump mp4 structure in human-readable format

OPTIONS
 -y, --dryrun       do not actually create or modify any files
 -k, --keepgoing    continue batch processing even after errors
 -q, --quiet        equivalent to --verbose 0
 -d, --debug NUM    increase debug or long-option to set NUM
 -v, --verbose NUM  increase verbosity or long-option to set NUM
 -h, --help         print brief help or long-option for extended help
     --version      print version information and exit

DEBUG LEVELS (for raw mp4 file I/O)
  0  supressed
  1  add warnings and errors (default)
  2  add table details
  3  add implicits
  4  everything

VERBOSE LEVELS
  0  warnings and errors
  1  normal informative messages (default)
  2  more informative messages
  3  everything
示例:
# ./mp4file --dump WUKELILI.mp4 
"WUKELILI.mp4": Dumping meta-information...
 "WUKELILI.mp4": type ftyp (ftyp)
  "WUKELILI.mp4": majorBrand = isom
  "WUKELILI.mp4": minorVersion = 1 (0x00000001)
  "WUKELILI.mp4": <table entries suppressed>
 "WUKELILI.mp4": type moov (moov)
  "WUKELILI.mp4": type mvhd (moov.mvhd)
   "WUKELILI.mp4": version = 0 (0x00)
   "WUKELILI.mp4": flags = 0 (0x000000)
   "WUKELILI.mp4": creationTime = 3442395090 (0xcd2ec7d2)
   "WUKELILI.mp4": modificationTime = 3442395090 (0xcd2ec7d2)
   "WUKELILI.mp4": timeScale = 600 (0x00000258)
   "WUKELILI.mp4": duration = 107059 (0x0001a233)
   "WUKELILI.mp4": rate = 1.000000
   "WUKELILI.mp4": volume = 1.000000
   "WUKELILI.mp4": reserved1 = <70 bytes>
   "WUKELILI.mp4": nextTrackId = 3 (0x00000003)
  "WUKELILI.mp4": type iods (moov.iods)
   "WUKELILI.mp4": version = 0 (0x00)
   "WUKELILI.mp4": flags = 0 (0x000000)
   "WUKELILI.mp4": objectDescriptorId = 1 (0x001) <10 bits>
   "WUKELILI.mp4": URLFlag = 0 (0x0) <1 bits>
   "WUKELILI.mp4": includeInlineProfileLevelFlag = 0 (0x0) <1 bits>
   "WUKELILI.mp4": reserved = 15 (0xf) <4 bits>
   "WUKELILI.mp4": ODProfileLevelId = 255 (0xff)
   "WUKELILI.mp4": sceneProfileLevelId = 255 (0xff)
   "WUKELILI.mp4": audioProfileLevelId = 40 (0x28)
   "WUKELILI.mp4": visualProfileLevelId = 21 (0x15)
   "WUKELILI.mp4": graphicsProfileLevelId = 255 (0xff)
   "WUKELILI.mp4": esIds
   "WUKELILI.mp4": ociDescr
   "WUKELILI.mp4": ipmpDescrPtr
   "WUKELILI.mp4": extDescr
  "WUKELILI.mp4": type trak (moov.trak)
   "WUKELILI.mp4": type tkhd (moov.trak.tkhd)
    "WUKELILI.mp4": version = 0 (0x00)
    "WUKELILI.mp4": flags = 1 (0x000001)
    "WUKELILI.mp4": creationTime = 3442395090 (0xcd2ec7d2)
    "WUKELILI.mp4": modificationTime = 3442395090 (0xcd2ec7d2)
    "WUKELILI.mp4": trackId = 1 (0x00000001)
    "WUKELILI.mp4": reserved1 = <4 bytes>  00 00 00 00  |....|
    "WUKELILI.mp4": duration = 107034 (0x0001a21a)
    "WUKELILI.mp4": reserved2 = <8 bytes>  00 00 00 00 00 00 00 00  |........|
    "WUKELILI.mp4": layer = 0 (0x0000)
    "WUKELILI.mp4": alternate_group = 0 (0x0000)
    "WUKELILI.mp4": volume = 0.000000
    "WUKELILI.mp4": reserved3 = <2 bytes>  00 00  |..|
    "WUKELILI.mp4": matrix = <36 bytes>
    "WUKELILI.mp4": width = 768.000000
    "WUKELILI.mp4": height = 432.000000
   "WUKELILI.mp4": type mdia (moov.trak.mdia)
    "WUKELILI.mp4": type mdhd (moov.trak.mdia.mdhd)
     "WUKELILI.mp4": version = 0 (0x00)
     "WUKELILI.mp4": flags = 0 (0x000000)
     "WUKELILI.mp4": creationTime = 3442395090 (0xcd2ec7d2)
     "WUKELILI.mp4": modificationTime = 3442395090 (0xcd2ec7d2)
     "WUKELILI.mp4": timeScale = 23000 (0x000059d8)
     "WUKELILI.mp4": duration = 4103000 (0x003e9b58)
     "WUKELILI.mp4": language = UNDEFINED(0) (0x0000)
     "WUKELILI.mp4": reserved = <2 bytes>  00 00  |..|
    "WUKELILI.mp4": type hdlr (moov.trak.mdia.hdlr)
     "WUKELILI.mp4": version = 0 (0x00)
     "WUKELILI.mp4": flags = 0 (0x000000)
     "WUKELILI.mp4": reserved1 = <4 bytes>  00 00 00 00  |....|
     "WUKELILI.mp4": handlerType = vide
     "WUKELILI.mp4": reserved2 = <12 bytes>  00 00 00 00 00 00 00 00 00 00 00 00  |............|
     "WUKELILI.mp4": name = 1359550061.h264#video:fps=23 - Imported with GPAC 0.5.0-rev4065
    "WUKELILI.mp4": type minf (moov.trak.mdia.minf)
     "WUKELILI.mp4": type vmhd (moov.trak.mdia.minf.vmhd)
      "WUKELILI.mp4": version = 0 (0x00)
      "WUKELILI.mp4": flags = 1 (0x000001)
      "WUKELILI.mp4": reserved = <8 bytes>  00 00 00 00 00 00 00 00  |........|
     "WUKELILI.mp4": type dinf (moov.trak.mdia.minf.dinf)
      "WUKELILI.mp4": type dref (moov.trak.mdia.minf.dinf.dref)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 1 (0x00000001)
       "WUKELILI.mp4": type url  (moov.trak.mdia.minf.dinf.dref.url )
        "WUKELILI.mp4": version = 0 (0x00)
        "WUKELILI.mp4": flags = 1 (0x000001)
        "WUKELILI.mp4": location = (null)
     "WUKELILI.mp4": type stbl (moov.trak.mdia.minf.stbl)
      "WUKELILI.mp4": type stsd (moov.trak.mdia.minf.stbl.stsd)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 1 (0x00000001)
       "WUKELILI.mp4": type avc1 (moov.trak.mdia.minf.stbl.stsd.avc1)
        "WUKELILI.mp4": reserved1 = <6 bytes>  00 00 00 00 00 00  |......|
        "WUKELILI.mp4": dataReferenceIndex = 1 (0x0001)
        "WUKELILI.mp4": reserved2 = <16 bytes>  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
        "WUKELILI.mp4": width = 768 (0x0300)
        "WUKELILI.mp4": height = 432 (0x01b0)
        "WUKELILI.mp4": reserved3 = <14 bytes>  00 48 00 00 00 48 00 00 00 00 00 00 00 01  |.H...H........|
        "WUKELILI.mp4": compressorName = 
        "WUKELILI.mp4": reserved4 = <4 bytes>  00 18 ff ff  |....|
        "WUKELILI.mp4": type avcC (moov.trak.mdia.minf.stbl.stsd.avc1.avcC)
         "WUKELILI.mp4": configurationVersion = 1 (0x01)
         "WUKELILI.mp4": AVCProfileIndication = 77 (0x4d)
         "WUKELILI.mp4": profile_compatibility = 64 (0x40)
         "WUKELILI.mp4": AVCLevelIndication = 30 (0x1e)
         "WUKELILI.mp4": reserved = 63 (0x3f) <6 bits>
         "WUKELILI.mp4": lengthSizeMinusOne = 3 (0x3) <2 bits>
         "WUKELILI.mp4": reserved1 = 7 (0x7) <3 bits>
         "WUKELILI.mp4": numOfSequenceParameterSets = 1 (0x01) <5 bits>
         "WUKELILI.mp4": <table entries suppressed>
         "WUKELILI.mp4": numOfPictureParameterSets = 1 (0x01)
         "WUKELILI.mp4": <table entries suppressed>
        "WUKELILI.mp4": type btrt (moov.trak.mdia.minf.stbl.stsd.avc1.btrt)
         "WUKELILI.mp4": bufferSizeDB = 48142 (0x0000bc0e)
         "WUKELILI.mp4": avgBitrate = 1428296 (0x0015cb48)
         "WUKELILI.mp4": maxBitrate = 678352 (0x000a59d0)
      "WUKELILI.mp4": type stts (moov.trak.mdia.minf.stbl.stts)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 1 (0x00000001)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type ctts (moov.trak.mdia.minf.stbl.ctts)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 3966 (0x00000f7e)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type stss (moov.trak.mdia.minf.stbl.stss)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 64 (0x00000040)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type stsc (moov.trak.mdia.minf.stbl.stsc)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 156 (0x0000009c)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type stsz (moov.trak.mdia.minf.stbl.stsz)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": sampleSize = 0 (0x00000000)
       "WUKELILI.mp4": sampleCount = 4103 (0x00001007)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type stco (moov.trak.mdia.minf.stbl.stco)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 380 (0x0000017c)
       "WUKELILI.mp4": <table entries suppressed>
  "WUKELILI.mp4": type trak (moov.trak)
   "WUKELILI.mp4": type tkhd (moov.trak.tkhd)
    "WUKELILI.mp4": version = 0 (0x00)
    "WUKELILI.mp4": flags = 1 (0x000001)
    "WUKELILI.mp4": creationTime = 3442395090 (0xcd2ec7d2)
    "WUKELILI.mp4": modificationTime = 3442395090 (0xcd2ec7d2)
    "WUKELILI.mp4": trackId = 2 (0x00000002)
    "WUKELILI.mp4": reserved1 = <4 bytes>  00 00 00 00  |....|
    "WUKELILI.mp4": duration = 107059 (0x0001a233)
    "WUKELILI.mp4": reserved2 = <8 bytes>  00 00 00 00 00 00 00 00  |........|
    "WUKELILI.mp4": layer = 0 (0x0000)
    "WUKELILI.mp4": alternate_group = 0 (0x0000)
    "WUKELILI.mp4": volume = 1.000000
    "WUKELILI.mp4": reserved3 = <2 bytes>  00 00  |..|
    "WUKELILI.mp4": matrix = <36 bytes>
    "WUKELILI.mp4": width = 0.000000
    "WUKELILI.mp4": height = 0.000000
   "WUKELILI.mp4": type mdia (moov.trak.mdia)
    "WUKELILI.mp4": type mdhd (moov.trak.mdia.mdhd)
     "WUKELILI.mp4": version = 0 (0x00)
     "WUKELILI.mp4": flags = 0 (0x000000)
     "WUKELILI.mp4": creationTime = 3442395090 (0xcd2ec7d2)
     "WUKELILI.mp4": modificationTime = 3442395090 (0xcd2ec7d2)
     "WUKELILI.mp4": timeScale = 24000 (0x00005dc0)
     "WUKELILI.mp4": duration = 4282368 (0x00415800)
     "WUKELILI.mp4": language = UNDEFINED(0) (0x0000)
     "WUKELILI.mp4": reserved = <2 bytes>  00 00  |..|
    "WUKELILI.mp4": type hdlr (moov.trak.mdia.hdlr)
     "WUKELILI.mp4": version = 0 (0x00)
     "WUKELILI.mp4": flags = 0 (0x000000)
     "WUKELILI.mp4": reserved1 = <4 bytes>  00 00 00 00  |....|
     "WUKELILI.mp4": handlerType = soun
     "WUKELILI.mp4": reserved2 = <12 bytes>  00 00 00 00 00 00 00 00 00 00 00 00  |............|
     "WUKELILI.mp4": name = GPAC ISO Audio Handler
    "WUKELILI.mp4": type minf (moov.trak.mdia.minf)
     "WUKELILI.mp4": type smhd (moov.trak.mdia.minf.smhd)
      "WUKELILI.mp4": version = 0 (0x00)
      "WUKELILI.mp4": flags = 0 (0x000000)
      "WUKELILI.mp4": reserved = <4 bytes>  00 00 00 00  |....|
     "WUKELILI.mp4": type dinf (moov.trak.mdia.minf.dinf)
      "WUKELILI.mp4": type dref (moov.trak.mdia.minf.dinf.dref)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 1 (0x00000001)
       "WUKELILI.mp4": type url  (moov.trak.mdia.minf.dinf.dref.url )
        "WUKELILI.mp4": version = 0 (0x00)
        "WUKELILI.mp4": flags = 1 (0x000001)
        "WUKELILI.mp4": location = (null)
     "WUKELILI.mp4": type stbl (moov.trak.mdia.minf.stbl)
      "WUKELILI.mp4": type stsd (moov.trak.mdia.minf.stbl.stsd)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 1 (0x00000001)
       "WUKELILI.mp4": type mp4a (moov.trak.mdia.minf.stbl.stsd.mp4a)
        "WUKELILI.mp4": reserved1 = <6 bytes>  00 00 00 00 00 00  |......|
        "WUKELILI.mp4": dataReferenceIndex = 1 (0x0001)
        "WUKELILI.mp4": soundVersion = 0 (0x0000)
        "WUKELILI.mp4": reserved2 = <6 bytes>  00 00 00 00 00 00  |......|
        "WUKELILI.mp4": channels = 2 (0x0002)
        "WUKELILI.mp4": sampleSize = 16 (0x0010)
        "WUKELILI.mp4": compressionId = 0 (0x0000)
        "WUKELILI.mp4": packetSize = 0 (0x0000)
        "WUKELILI.mp4": timeScale = 1572864000 (0x5dc00000)
        "WUKELILI.mp4": type esds (moov.trak.mdia.minf.stbl.stsd.mp4a.esds)
         "WUKELILI.mp4": version = 0 (0x00)
         "WUKELILI.mp4": flags = 0 (0x000000)
         "WUKELILI.mp4": ESID = 0 (0x0000)
         "WUKELILI.mp4": streamDependenceFlag = 0 (0x0) <1 bits>
         "WUKELILI.mp4": URLFlag = 0 (0x0) <1 bits>
         "WUKELILI.mp4": OCRstreamFlag = 0 (0x0) <1 bits>
         "WUKELILI.mp4": streamPriority = 0 (0x00) <5 bits>
         "WUKELILI.mp4": decConfigDescr
          "WUKELILI.mp4": objectTypeId = 64 (0x40)
          "WUKELILI.mp4": streamType = 5 (0x05) <6 bits>
          "WUKELILI.mp4": upStream = 0 (0x0) <1 bits>
          "WUKELILI.mp4": reserved = 1 (0x1) <1 bits>
          "WUKELILI.mp4": bufferSizeDB = 745 (0x0002e9) <24 bits>
          "WUKELILI.mp4": maxBitrate = 107048 (0x0001a228)
          "WUKELILI.mp4": avgBitrate = 94248 (0x00017028)
          "WUKELILI.mp4": decSpecificInfo
           "WUKELILI.mp4": info = <7 bytes>  13 10 56 e5 9d 48 00  |..V..H.|
          "WUKELILI.mp4": profileLevelIndicationIndexDescr
         "WUKELILI.mp4": slConfigDescr
          "WUKELILI.mp4": predefined = 2 (0x02)
         "WUKELILI.mp4": ipiPtr
         "WUKELILI.mp4": ipIds
         "WUKELILI.mp4": ipmpDescrPtr
         "WUKELILI.mp4": langDescr
         "WUKELILI.mp4": qosDescr
         "WUKELILI.mp4": regDescr
         "WUKELILI.mp4": extDescr
      "WUKELILI.mp4": type stts (moov.trak.mdia.minf.stbl.stts)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 1 (0x00000001)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type stsc (moov.trak.mdia.minf.stbl.stsc)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 3 (0x00000003)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type stsz (moov.trak.mdia.minf.stbl.stsz)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": sampleSize = 0 (0x00000000)
       "WUKELILI.mp4": sampleCount = 4182 (0x00001056)
       "WUKELILI.mp4": <table entries suppressed>
      "WUKELILI.mp4": type stco (moov.trak.mdia.minf.stbl.stco)
       "WUKELILI.mp4": version = 0 (0x00)
       "WUKELILI.mp4": flags = 0 (0x000000)
       "WUKELILI.mp4": entryCount = 381 (0x0000017d)
       "WUKELILI.mp4": <table entries suppressed>
  "WUKELILI.mp4": type udta (moov.udta)
   "WUKELILI.mp4": type meta (moov.udta.meta)
    "WUKELILI.mp4": version = 0 (0x00)
    "WUKELILI.mp4": flags = 0 (0x000000)
    "WUKELILI.mp4": type hdlr (moov.udta.meta.hdlr)
     "WUKELILI.mp4": version = 0 (0x00)
     "WUKELILI.mp4": flags = 0 (0x000000)
     "WUKELILI.mp4": reserved1 = 0 (0x00000000)
     "WUKELILI.mp4": handlerType = <4 bytes>  6d 64 69 72  |mdir|
     "WUKELILI.mp4": reserved2 = <12 bytes>  00 00 00 00 00 00 00 00 00 00 00 00  |............|
     "WUKELILI.mp4": name = <1 bytes>  00  |.|
    "WUKELILI.mp4": type ilst (moov.udta.meta.ilst)
     "WUKELILI.mp4": type ?alb (moov.udta.meta.ilst.?alb)
      "WUKELILI.mp4": type data (moov.udta.meta.ilst.?alb.data)
       "WUKELILI.mp4": typeReserved = 0 (0x0000)
       "WUKELILI.mp4": typeSetIdentifier = 0 (0x00)
       "WUKELILI.mp4": typeCode = UTF-8 (0x01)
       "WUKELILI.mp4": locale = 0 (0x00000000)
       "WUKELILI.mp4": metadata = <9 bytes>  59 69 6e 79 75 65 74 61 69  |Yinyuetai|
     "WUKELILI.mp4": type ?ART (moov.udta.meta.ilst.?ART)
      "WUKELILI.mp4": type data (moov.udta.meta.ilst.?ART.data)
       "WUKELILI.mp4": typeReserved = 0 (0x0000)
       "WUKELILI.mp4": typeSetIdentifier = 0 (0x00)
       "WUKELILI.mp4": typeCode = UTF-8 (0x01)
       "WUKELILI.mp4": locale = 0 (0x00000000)
       "WUKELILI.mp4": metadata = <13 bytes>  79 69 6e 79 75 65 74 61 69 2e 63 6f 6d  |yinyuetai.com|
     "WUKELILI.mp4": type ?cmt (moov.udta.meta.ilst.?cmt)
      "WUKELILI.mp4": type data (moov.udta.meta.ilst.?cmt.data)
       "WUKELILI.mp4": typeReserved = 0 (0x0000)
       "WUKELILI.mp4": typeSetIdentifier = 0 (0x00)
       "WUKELILI.mp4": typeCode = UTF-8 (0x01)
       "WUKELILI.mp4": locale = 0 (0x00000000)
       "WUKELILI.mp4": metadata = <15 bytes>  59 69 6e 79 75 65 74 61 69 20 46 75 6b 61 69  |Yinyuetai Fukai|
     "WUKELILI.mp4": type ?day (moov.udta.meta.ilst.?day)
      "WUKELILI.mp4": type data (moov.udta.meta.ilst.?day.data)
       "WUKELILI.mp4": typeReserved = 0 (0x0000)
       "WUKELILI.mp4": typeSetIdentifier = 0 (0x00)
       "WUKELILI.mp4": typeCode = UTF-8 (0x01)
       "WUKELILI.mp4": locale = 0 (0x00000000)
       "WUKELILI.mp4": metadata = <17 bytes>
 "WUKELILI.mp4": type mdat (mdat)
 "WUKELILI.mp4": type free (free)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聚优致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值