zoukankan      html  css  js  c++  java
  • C#获取 Flv视频文件信息

    FLV文件结构解析

    http://noahgenius.javaeye.com/blog/164782

    FLV是一个二进制文件,由文件头(FLV header)和很多tag组成。tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流(关键字或者文件信息之类)。

    FLV Header

    一般比较简单,包括文件类型之类的全局信息

    文件类型3bytes总是FLV(0x46 0x4C 0x56),否则...
    版本
    1byte一般是0x01,表示FLV version 1
    流信息1byte
    倒数第一bit是1表示有视频,倒数第三bit是1表示有音频,其他都应该是0(有些软件如flvtool2可能造成倒数第四bit是1,不过也没发现有什么不对)
    header长度
    4bytes整个文件头的长度,一般是9(3+1+1+4),有时候后面还有些别的信息,就不是9了
       

    FLV Body

    FLV body就是由很多tag组成的,一个tag包括下列信息:

    previoustagsize4bytes前一个tag的长度,第一个tag就是0
    tag类型1byte

    三类:

    • 8 -- 音频tag
    • 9 -- 视频tag
    • 18 -- 脚本tag
    数据区长度3bytes 
    时间戳3bytes单位毫秒,如果是脚本tag就是0
    扩展时间戳
    1byte作为时间戳的高位
    streamsID3bytes总是0(不知道干啥用)
    数据区  

    根据不同的tag类型就有不同的数据区

    Audio tag 数据区

    audio信息1byte

    前四位bits表示音频格式:

    • 0 -- 未压缩
    • 1 -- ADPCM
    • 2 -- MP3
    • 5 -- Nellymoser 8kHz momo
    • 6 -- Nellymoser

    下面两位bits表示samplerate:

    • 0 -- 5.5kHz
    • 1 -- 11kHz
    • 2 -- 22kHz
    • 3 -- 44kHz

    下面一位bit表示每个采样的长度:

    • 0 -- snd8Bit
    • 1 -- snd16Bit

    下面一位bit表示类型:

    • 0 -- sndMomo
    • 1 -- sndStereo
    audio数据区
    不定 

    video tag 数据区

    video信息1byte

    前四位bits表示类型:

    • 1 -- keyframe
    • 2 -- inner frame
    • 3 -- disposable inner frame (H.263 only)

    后四位bits表示编码器id:

    • 2 -- Seronson H.263
    • 3 -- Screen video
    • 4 -- On2 VP6
    • 5 -- On2 VP6 without channel
    • 6 -- Screen video version 2
    video数据区
    不定 

    script tag 数据区

    略n字...



    代码
    Code

    目前只用到读取视频时长的部分,有待完善
  • 相关阅读:
    关于求 p_i != i and p_i != i+1 的方案数的思考过程
    poj 3041 Asteroids 二分图最小覆盖点
    poj 1325 Machine Schedule 最小顶点覆盖
    poj 1011 Sticks 减枝搜索
    poj 1469 COURSES 最大匹配
    zoj 1516 Uncle Tom's Inherited Land 最大独立边集合(最大匹配)
    Path Cover (路径覆盖)
    hdu 3530 SubSequence TwoPoint单调队列维护最值
    zoj 1654 Place the Rebots 最大独立集转换成二分图最大独立边(最大匹配)
    poj 1466 Girls and Boys 二分图最大独立子集
  • 原文地址:https://www.cnblogs.com/passer/p/1545172.html
Copyright © 2011-2022 走看看