|
ID3V2 |
包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。 |
| Frame [b].[/b] [b].[/b] [b].[/b] Frame | 一系列的帧,个数由文件大小和帧长决定 每个FRAME的长度可能不固定,也可能固定,由位率bitrate决定 每个FRAME又分为帧头和数据实体两部分 帧头记录了mp3的位率,采样率,版本等信息,每个帧之间相互独立。 |
| ID3V1 | 包含了作者,作曲,专辑等信息,长度为128BYTE。 |
# coding: utf-8
'''
@author: BigFengFeng
@time: 16/12/21 下午6:10
@license: Apache Licence
@description:
'''
import os
#mp3filePath是否是mp3格式的
def isMp3Format(mp3filePath):
#读取文件内字符串
f = open(mp3filePath, "r");
fileStr = f.read();
f.close();
head3Str = fileStr[:3];
#判断开头是不是ID3
if head3Str == "ID3":
return True;
#判断结尾有没有TAG
last32Str = fileStr[-32:];
if last32Str[:3] == "TAG":
return True;
#判断第一帧是不是FFF开头, 转成数字
# fixme 应该循环遍历每个帧头,这样才能100%判断是不是mp3
ascii = ord(fileStr[:1]);
if ascii == 255:
return True;
return False;
#遍历folderPath看看是不是都是mp3格式的,
#是就true,不是就是false, 并返回是mp3的list,不是MP3的list
def isMp3FolderTraverse(folderPath):
mp3List = [];
notMp3List = [];
isAllMpFormat = True;
for dirpath, dirnames, filenames in os.walk(folderPath):
for filename in filenames:
path = dirpath + os.sep + filename;
isMp3 = isMp3Format(path);
#判断是不是mp3结尾的 并且 是mp3格式的
if isMp3 == False and str.endswith(path, ".mp3") == True:
# print("--warning: file " + path + " is not mp3 format!--");
notMp3List.append(path);
isAllMpFormat = False;
else:
mp3List.append(path);
return isAllMpFormat, mp3List, notMp3List;
if __name__ == '__main__':
isMp3Format("s_com_click1.mp3");
isAllMp3, mp3List, notMp3List = isMp3FolderTraverse("sound");
print isAllMp3;
print mp3List;
print notMp3List;
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有