一、MP4v2 简介

参看:嵌入式Linux下MP4视频录制库MP4V2移植和简介
了解:mp4(3) - Linux man page
了解:MP4文件格式的解析,以及MP4文件的分割算法
首先官网上有这样的介绍:
C library and various command-line utilities which permit creation and modification of MP4 filesMP4v2 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 namesSystem 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=useboth]--with-gnu-ld           assume the C compiler uses GNU ld [default=no]Some influential environment variables:CXX         C++ compiler commandCXXFLAGS    C++ compiler flagsLDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in anonstandard 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> ifyou have headers in a nonstandard directory <include dir>CC          C compiler commandCFLAGS      C compiler flagsCPP         C preprocessorCXXCPP      C++ preprocessorUse 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" == "" ]; thenINSTALL_PATH=`pwd`/_install
elseif [ -d $1 ]; thenINSTALL_PATH=$1elseexit 1fi
fiif [ ! -d $INSTALL_PATH ]; thenmkdir -p $INSTALL_PATH
fiif [ -f config.log ]; thenmake 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-ldif [ $? -eq 0 ]; thenmakeif [ $? -eq 0 ]; thenmake installexit 0fi
fi 

3、设置权限并执行脚本

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

4、查看生成文件

编译成功之后,会在 _install 目录中生成如下的文件夹,如下所示:
看看lib目录下是否有mp4v2的库,如下所示:
想要知道如何使用这个库,可以参考util目录下的应用代码,如下所示:

三、测试

参看:学习使用mp4v2-2.0.0 —— 1

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 HzArtist: yinyuetai.comRelease Date: 01/30/13 20:51:30Album: YinyuetaiComments: 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 trackPARAMETERS--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,vSPACINGOPTIONS-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 exitDEBUG LEVELS (for raw mp4 file I/O)0  supressed1  add warnings and errors (default)2  add table details3  add implicits4  everythingVERBOSE LEVELS0  warnings and errors1  normal informative messages (default)2  more informative messages3  everything

示例:

# ./mp4track --list WUKELILI.mp4
track[0] id=1type           = videoenabled        = trueinMovie        = falseinPreview      = falselayer          = 0alternateGroup = 0volume         = 0.0000width          = 768.00000000height         = 432.00000000language       = UNDEFINED(0)handlerName    = 1359550061.h264#video:fps=23 - Imported with GPAC 0.5.0-rev4065userDataName   = <absent>
track[1] id=2type           = audioenabled        = trueinMovie        = falseinPreview      = falselayer          = 0alternateGroup = 0volume         = 1.0000width          = 0.00000000height         = 0.00000000language       = UNDEFINED(0)handlerName    = GPAC ISO Audio HandleruserDataName   = <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 formatOPTIONS-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 exitDEBUG LEVELS (for raw mp4 file I/O)0  supressed1  add warnings and errors (default)2  add table details3  add implicits4  everythingVERBOSE LEVELS0  warnings and errors1  normal informative messages (default)2  more informative messages3  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)

mp4v2再学习 -- Linux 下安装说明相关推荐

  1. FFmpeg再学习 -- Windows下安装说明

    看了半晌 雷霄骅 的 ffmpeg 的视频.待续稍后总结. 一.FFmpeg 简介 FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用 LGPL 或GPL 许可证(依据你选择的组 ...

  2. C语言再学习 -- Linux下find命令用法

    参看:linux下find(文件查找)命令的用法总结 linux下查找文件的命令有两个:locate 和 find 首先说一下locate: 这个命名是对其生成的数据库进行遍历(生成数据库的命令:uo ...

  3. LIVE555再学习 -- Linux 下编译

    现在我们来看一下 LIVE555 在Linux下的编译 一.下载源码 下载:Index of /liveMedia/public 参看:LIVE555 Streaming Media 选择下载 liv ...

  4. mp4v2再学习 -- H264视频编码成MP4文件

    一.H264视频编码成MP4文件 参看:H264视频编码成MP4文件 参看:mp4v2在VS2010下的编译与在项目中的使用 最近做项目需要将H264文件封装为mp4文件,从网上找到了MP4V2库,下 ...

  5. FFmpeg学习之路:Linux下安装编译

    FFmpeg学习之路:Linux下安装编译 文章目录 FFmpeg学习之路:Linux下安装编译 前言 一.下载FFmpeg 二.准备工作 1.安装yasm的汇编编译器 2.安装SDL2 三.编译安装 ...

  6. 【Linux学习笔记】Linux下安装Libreoffice

    Linux下安装Libreoffice 一.Libreoffice简介 二.安装 2.1.如果安装过libreoffice,需要先卸载 2.2.下载libreoffice 2.3.将下载的文件放到/u ...

  7. linux下安装jdk+tomcat+eclipse+mysql

    linux下安装jdk+tomcat+eclipse+mysql 这个星期一部门老大忽然冒出一句:"小祝,你对linux怎么样啊,用过没?",于是俺就老实的回答:"在学校 ...

  8. jmeter linux安装,Linux下安装Jmeter

    今天我们学习下如何在Linux下安装Jmeter,因为Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK. 本人环境: CentOS 7.3 64位 JDK 1.8(可参考文 ...

  9. linux下安装c/c++环境(gcc/gcc+)

    ##linux下安装c/c++环境(gcc) yum install gccyum install gcc-c++ libstdc++-devel 点个赞,看一看,好习惯!本文 GitHub http ...

最新文章

  1. Flex布局教程(来源:阮一峰)
  2. Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
  3. boost::make_connected用法的测试程序
  4. Spark 编程模型(上)
  5. Java捕获并处理线程失败抛出的异常
  6. virsh default启动失败原因分析及解决
  7. [Elasticsearch] es 6.6 编译报错 java.net.ConnectException: Operation timed out
  8. 从Ruby中删除数组中的重复元素
  9. 目前,国内的互联网发展趋势
  10. 蓝桥杯练习 圆的面积
  11. php小型购物网站,PHP实现一个多功能购物网站
  12. 232串口测试方法介绍
  13. kettle定时调度管理平台
  14. 【小技巧(水文)】清理电脑,远离流氓
  15. 俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。
  16. 差之毫厘谬之千里!带你认识CPU后缀含义
  17. QSocketNotifier 解读
  18. MIT公开课18.06 Gilbert Strang 线性代数 笔记1 - Ax=b和四个子空间
  19. 在nodejs中将GBK转UTF
  20. 平安夜,还做那只「花好夜猿」吗?

热门文章

  1. sql server(MsSql)字段命名,表命名,视图命名,SQL语句书写参考
  2. 总结iPhone、iPad各机型对应的iOS 系统版本(最全)
  3. Auto-Rooting Script(全自动提权脚本)
  4. 网络流量分析详解(包含OSI七层模型、TCP协议及Wireshark工具用法)
  5. Internal error. Please report to https://code.google.com/p/android/issues
  6. 【OpenCV】 ⚠️高手勿入! 半小时学会基本操作 24⚠️ SIFT 算法
  7. C++编程:简易梯形面积计算器
  8. caffe 报错 Aborted(core dumped
  9. 推荐几款云服务器上搭建属于自己的私人网盘
  10. python3.7通过itchat方式登录微信给好友发送天气信息