zoukankan      html  css  js  c++  java
  • 获得wav语音文件时长

    用代码获取文件时长。

    直接读取wav文件头信息,从文件起始地址偏移28个字节长度为4个字节保存的是每秒钟播放的字节数,

    从文件起始地址偏移40个字节长度为4个字节保存的是声音数据的总的字节数,相除就是播放时间。 

     1 var
     2 
     3 fileStream: TFileStream;
     4 {文件头标志}
     5 fileHeadArr: array[0..3] of Byte;
     6 //每秒钟播放的字节数
     7 //声音数据的总的字节数,相除就是播放时间
     8 nSecByte, nCountByte: Integer;
     9 begin
    10 Result := -1;
    11 fileStream := TFileStream.Create(strSourceFile, fmOpenRead or fmShareDenyNone);
    12 try
    13 try 
    14 fileStream.Position := 28;
    15 fileStream.Read(fileHeadArr, SizeOf(fileHeadArr));
    16 
    17 nSecByte := StrToInt('$' + IntToHex(fileHeadArr[3], 2) + IntToHex(fileHeadArr[2], 2) +
    18 IntToHex(fileHeadArr[1], 2) + IntToHex(fileHeadArr[0], 2));
    19 
    20 fileStream.Position := 508;
    21 fileStream.Read(fileHeadArr, SizeOf(fileHeadArr));
    22 nCountByte := StrToInt('$' + IntToHex(fileHeadArr[3], 2) + IntToHex(fileHeadArr[2], 2) +
    23 IntToHex(fileHeadArr[1], 2) + IntToHex(fileHeadArr[0], 2));
    24 
    25 Result := nCountByte div nSecByte;
    26 except
    27 on e:Exception do
    28 begin
    29        输出日志('GetFileDuration: ' + e.Message);
    30 end; 
    31 end;
    32 finally
    33 fileStream.Free;
    34 end;
  • 相关阅读:
    不可或缺 Windows Native (15)
    不可或缺 Windows Native (14)
    不可或缺 Windows Native (13)
    不可或缺 Windows Native (12)
    不可或缺 Windows Native (11)
    不可或缺 Windows Native (10)
    不可或缺 Windows Native (9)
    不可或缺 Windows Native (8)
    不可或缺 Windows Native (7)
    不可或缺 Windows Native (6)
  • 原文地址:https://www.cnblogs.com/tsolarboy/p/8744929.html
Copyright © 2011-2022 走看看