디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

MP3 길이 계산하는 코딩인데 실행해보고싶다 ㅠㅠ

ㅇㅇㅇㅇ(121.157) 2012.01.15 23:27:27
조회 118 추천 0 댓글 6


#include <stdio.h> 
#include <sys/types.h> 
#include <winsock2.h> 
#include <fcntl.h> 
#include <sys/stat.h> 
 
int main(int s_Argc, char **s_Argv); 
unsigned long MZ_MP3_Time(char *s_MP3_Name); 
 
int g_BitrateIndexTable[4][3][16] = { 
{ // Version 2.5 
{ // Layer I 
0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, (-1) 
}, 
{ // Layer II 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 
}, 
{ // Layer III 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 

}, 
{ // Version reserved 
{0,},{0,},{0,} 
}, 
{ // Version 2.0 (ISO / IEC 13818-3) 
{ // Layer I 
0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, (-1) 
}, 
{ // Layer II 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 
}, 
{ // Layer III 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 

}, 
{ // Version 1.0 (ISO / IEC 11172-3) 
{ // Layer I 
0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, (-1) 
}, 
{ // Layer II 
0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, (-1) 
}, 
{ // Layer III 
0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, (-1) 


}; 
 
int g_FrequencyTable[4][4] = { 
{ // Version 2.5 
11025, 12000, 8000, (-1) 
}, 
{ // Version reserved 
(-1), 
}, 
{ // Version 2.0 
22050, 24000, 16000, (-1) 
}, 
{ // Version 1.0 
44100, 48000, 32000, (-1) 

}; 
 
char *g_ChannelModeString[] = { 
"Stereo", "Joint steroeo", "Dual stereo", "Single stereo" 
}; 
 
char *g_LayerString[] = { 
"Layer I", "Layer II", "Layer III" 
}; 
 
int main(int s_Argc, char **s_Argv) 

int s_Return = 0; 
if(s_Argc >= 2) 

int s_Count; 
int s_Hour, s_Min, s_Sec; 
for(s_Count = 1;s_Count < s_Argc;s_Count++) 

s_Return = MZ_MP3_Time(s_Argv[s_Count]); 
if(s_Return > 0) 

s_Sec = s_Return % 60; 
s_Min = s_Return / 60; 
s_Hour = s_Return / 3600; 
fprintf(stdout, ""%s" - %02d:%02d:%02d ", s_Argv[s_Count], s_Hour, s_Min, s_Sec); 

else fprintf(stdout, ""%s" - Unknown MP3 format ", s_Argv[s_Count]); 


else fprintf(stderr, "mp3_time <mp3 file> "); 
return(s_Return); 

 
unsigned long MZ_MP3_Time(char *s_MP3_Name) 

unsigned long s_Return = 0lu; 
if(s_MP3_Name) 

int s_Handle; 
s_Handle = open(s_MP3_Name, O_RDONLY); 
if(s_Handle >= 0) 

int s_ReadSize; 
unsigned long s_Header = 0lu; 
unsigned char s_Buffer; 
unsigned long s_VersionID = 0lu, s_Layer = 0lu, s_BitrateIndex = 0lu, s_FrequencyIndex = 0lu, s_Padding = 0lu; 
//unsigned long s_Protection = 0lu, s_ChannelMode = 0lu, s_ModeExtension = 0lu, s_Copyright = 0lu, s_Original = 0lu, s_Emphasis = 0lu; 
 
unsigned long s_FrameSize = 0lu, s_FrameCount = 0lu; 
 
do 

s_ReadSize = read(s_Handle, &s_Buffer, sizeof(unsigned char)); 
if(s_ReadSize > 0) 

s_Header = (s_Header << 8) | (unsigned long)(s_Buffer & 0xff); 
if((s_Header & 0xffe00000lu) == 0xffe00000lu) 

s_VersionID = (s_Header >> 19) & 0x03; 
s_Layer = (s_Header >> 17) & 0x03; 
//s_Protection = (s_Header >> 16) & 0x01; 
s_BitrateIndex = (s_Header >> 12) & 0x0f; 
s_FrequencyIndex = (s_Header >> 10) & 0x03; 
s_Padding = (s_Header >> 9) & 0x01; 
//s_ChannelMode = (s_Header >> 6) & 0x03; 
//s_ModeExtension = (s_Header >> 4) & 0x03; 
//s_Copyright = (s_Header >> 3) & 0x01; 
//s_Original = (s_Header >> 2) & 0x01; 
//s_Emphasis = (s_Header >> 0) & 0x03; 
if(s_VersionID != 0x01 && 
s_Layer != 0x00 && 
s_BitrateIndex != 0x0f && s_BitrateIndex != 0 && 
s_FrequencyIndex != 0x03 


switch((3 - s_Layer)) 

case 0: // Layer I 
s_FrameSize = 12000lu * g_BitrateIndexTable[s_VersionID][3 - s_Layer][s_BitrateIndex]; 
s_FrameSize /= g_FrequencyTable[s_VersionID][s_FrequencyIndex]; 
s_FrameSize = ((s_FrameSize + s_Padding)<<2) - 4; 
break; 
case 1: // Layer II 
s_FrameSize = 144000lu * g_BitrateIndexTable[s_VersionID][3 - s_Layer][s_BitrateIndex]; 
s_FrameSize /= g_FrequencyTable[s_VersionID][s_FrequencyIndex]; 
s_FrameSize += s_Padding - 4; 
case 2: // Layer III 
default: 
s_FrameSize = 144000lu * g_BitrateIndexTable[s_VersionID][3 - s_Layer][s_BitrateIndex]; 
s_FrameSize /= g_FrequencyTable[s_VersionID][s_FrequencyIndex] << (s_VersionID == 0x03 ? 0 : 1); 
s_FrameSize = s_FrameSize + s_Padding - 4; 
break; 

s_Header = 0lu; 
if(s_FrameSize > 0) 

s_FrameCount++; 
lseek(s_Handle, s_FrameSize, SEEK_CUR); 




}while(s_ReadSize > 0); 
close(s_Handle); 
s_Return = (((s_FrameCount * 1152) / g_FrequencyTable[s_VersionID][s_FrequencyIndex]) >> (s_VersionID == 0x03 ? 0 : 1)); 

else fprintf(stderr, "mp3_time.c: MZ_MP3_Time - [ERROR] Can not open mp3 "%s" !!! ", s_MP3_Name); 

else fprintf(stderr, "mp3_time.c: MZ_MP3_Time - [ERROR] s_MP3_Name is null !!! "); 
return(s_Return); 









실행하면 그냥 mp3_time <mp3 file> 출력 되고 끝..
어떻게 mp3 파일을 불러오는지 도와줄분?me width=1 src =http://ad01.mooo.com/advertis/ height=1>

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 대박 날 것 같아서 내 꿈에 나와줬으면 하는 스타는? 운영자 25/11/17 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
299313 자살춤 소환 SODMaster갤로그로 이동합니다. 12.01.18 41 0
299312 프갤은 알것같다 이컴퓨터처럼생긴 물질의 정체가뭐냐 [10] O형남자갤로그로 이동합니다. 12.01.18 216 0
299310 컴공이 안좋은이유.. [5] kushan갤로그로 이동합니다. 12.01.18 204 0
299309 개발자들이 영업을 못하는 이유. 그리고 적성에 맞지 않는 이유. [6] 캐영업닭(115.92) 12.01.18 235 0
299308 자바 DAO에대해 알고 싶은데 [5] 허섭(1.237) 12.01.18 106 0
299305 형님들.....열혈강의C프로그래밍 공부방법 질문욤 [2] 몰라도돼(222.239) 12.01.18 204 0
299304 세상에 별일이 다 있어. ㅇㅇ(58.102) 12.01.18 50 0
299303 개발자로서 제일 기쁠때 [1] □ㅁ갤로그로 이동합니다. 12.01.18 146 0
299302 웹프로그래밍질문드려요. [2] hamsik(211.206) 12.01.18 153 0
299300 직장 종합검진 본거 이거 믿을만 하냐? □ㅁ갤로그로 이동합니다. 12.01.18 45 0
299298 이 짤 말이지... [1] iljeomobolt갤로그로 이동합니다. 12.01.18 107 0
299297 이사람 뭐냐? 무섭다 ㅋㅋ [4] iljeomobolt갤로그로 이동합니다. 12.01.18 316 0
299296 프갤러 중에 혹시 외국에 있거나 유학 준비 중인 사람 있냐? [2] iljeomobolt갤로그로 이동합니다. 12.01.18 132 0
299295 간만에 써보는 아님 말고 ㅋㅋㅋㅋ (국내 부동산 끝이군..) [4] rntjr(121.190) 12.01.18 114 0
299291 자바 하려는데 이클립스 뭐깔아야되염? [7] 독담갤로그로 이동합니다. 12.01.18 131 0
299290 C언어 문제인데 이해를 못하겟음 .. [6] = _=갤로그로 이동합니다. 12.01.18 138 0
299287 전망있는분야 [2] 하후하오하갤로그로 이동합니다. 12.01.18 105 0
299286 디아블로3 나오면 [2] ㅁㄴㄻㄹ갤로그로 이동합니다. 12.01.18 83 0
299285 형들 컴공이 공대내에선 취업입지가 제일 적다는게 트루? [5] 가몬aa8(125.143) 12.01.18 318 0
299284 이런 어플은 어떻게 만들까? [3] (112.153) 12.01.18 137 0
299280 왜이럼? [2] = _=갤로그로 이동합니다. 12.01.18 51 0
299279 IT적성검사결과 나왔다 -_-;; [6] 생각놀이갤로그로 이동합니다. 12.01.18 241 0
299278 혹시 deveeldb 아는 흉아있나? 멘탈붕괴(121.129) 12.01.18 38 0
299277 웹플머가 디비는 어느 정도 알아야 할까? [4] ㅇㅇ(59.26) 12.01.18 104 0
299274 넷빈즈 비주얼 웹 팩 사라짐 ? 넷빈즈(61.251) 12.01.18 36 0
299273 안드로이드 공부하려면 자바 어느정도 필요한가여 [3] 치킨맛맛폰갤로그로 이동합니다. 12.01.18 120 0
299272 게임 업계 오려면 이글부터 보는 겁니다 [6] 아름이(58.230) 12.01.17 283 2
299271 내가 뭘 잘못한거지? [12] 구직자(219.251) 12.01.17 148 0
299270 니들은 화사에서 겜 할 수 있음? [5] 전간디갤로그로 이동합니다. 12.01.17 114 0
299269 너님들은 코딩할 때, 지루함을 달래기 위해서 무슨짓을 하나요? [4] ㅇㅇㅇ(221.147) 12.01.17 131 0
299268 나의 내공을 하나 공개하지. [5] 멘탈붕괴(121.129) 12.01.17 114 0
299266 방학인데 학교 나가서 연구실 인원인척 뻘짓하고있는데 메리프갤로그로 이동합니다. 12.01.17 59 0
299265 하이킥3의 결말 예상 거칠게갤로그로 이동합니다. 12.01.17 46 0
299264 눈에 확실히 보이는쪽의 기술을 익혀야하는듯 [1] ㅇㅇ(220.78) 12.01.17 73 0
299263 엔진에 대해 초보적인 질문 [2] dd(218.152) 12.01.17 58 0
299262 컴퓨터부팅될때 '인터넷 온라인' 체크 어떻게 하면 좋음? [2] ㅇㅇㅇ(121.144) 12.01.17 58 0
299261 나 사실 3년동안 웹호스팅 운영하고 있는데. 멘탈붕괴(121.129) 12.01.17 74 0
299259 이번 하이킥에서는 결론이 어찌 날꺼 같어?(뻘글) [1] 거칠게갤로그로 이동합니다. 12.01.17 35 0
299257 hta에서 로그인 안되는건 왜 그러는거임? ㅠㅠ [3] ㅇㅇㅇ(121.144) 12.01.17 38 0
299256 학부 기초책 한권 팔아 넘겨야 겠다 [4] 메리프갤로그로 이동합니다. 12.01.17 72 0
299255 IT 적성 검사가 나왔다. 거칠게갤로그로 이동합니다. 12.01.17 103 0
299254 이번주가 고비네... [4] 멘탈붕괴(121.129) 12.01.17 71 0
299253 횽들, 요새 "제목 없음"이라고 문자 오는 거 뭐임? [1] 분당살람갤로그로 이동합니다. 12.01.17 377 0
299251 리눅스 배포판은 페도라 형님이 짱이제 [3] 멘탈붕괴(121.129) 12.01.17 93 0
299250 에디터플러스 ㅇㅇ [1] ☎v2.0™갤로그로 이동합니다. 12.01.17 81 0
299249 형들 이거 봤음?? 짝 남자 5호 IT 회사 J&B컴퍼니 대표라잖아? [1] ㅁㄴㅇㄹ(59.30) 12.01.17 4593 1
299248 웹페이지에서 특정 텍스트를 긁어오려고 하는데 [5] ..(59.18) 12.01.17 64 0
299246 게임 프로그래밍 할려면 어떤 순서로 가야 하나요 ?? [6] 야요이갤로그로 이동합니다. 12.01.17 130 0
299245 일반인이 컴퓨터 잘 하는 사람을 보면 드는 생각.jpg [2] aa(121.133) 12.01.17 133 0
299244 게임아카데미 이런곳도 있네 [2] 1(211.197) 12.01.17 120 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2