|
안녕하세요. 2년전부터 계속 초보빌더인(人) 천강협입니다.
요즘 영어공부좀 할까하고 무슨 프로그램 짜고 있습니다. 그런데, 역시 초보는
초보인지라 잘 안되네요.. 여기저기서 막히고 있습니다. 고수님들의 공력이
절실히 필요합니다.
질문 하나.
하고 싶은 일 : TMediaPlayer에서 어떤 파일을 재생중일때, 현재 플레이하는
위치를 시간(시분초)으로 표시하려합니다.
문제상황 :
TMediaPlayer의 TimeFormat를 설정하면 현재 플레이중인 위치를
나타내는 Position이 시분초를 나타내게 된다고 합니다.
그런데, TMediaPlayer::TimeFormat 설명에 보면
Not all formats are supported by every device. ...
이라고 나와있습니다. 그리고 MP3, MPG를 돌려보았는데, TimeFormat를
아무리 조절하여도 Position은 시각정보가 아닌 Frames정보만 항상
가지고 있습니다. 아무래도 TimeFormat를 지원하지 않는 것 같습니다.
이럴경우 어떻게 해야 현재의 위치를 표현할 수 있을지...
현재의 Frames 위치를 가지고 시간을 알아내려면 1초에 몇프레임을
플레이하는지 알아야 ( 현재위치Frame ) / (1초에 플레이하는 프레임수)
이런식으로 '초'를 알아낼텐데... 1초에 플레이하는 프레임수도 도저히
찾지 못하겠고.. 어찌해야합니까...
질문 둘.
하고싶은 일 : TMediaPlayer를 이용하여 동영상이나 mp3를 플레이할때
특정키를 누르면, 그 위치를 새로운 트랙의 시작으로 표시를
하게하려 합니다.
처한 상황 :
트랙을 처리하려면 트랙위치를 저장하는 배열인
__property int TrackPosition[int TrackNum] = {read=GetTrackPosition}
와 현재 플레이하는 파일에 있는 트랙의 갯수를 저장하는
__property int Tracks = {read=GetTracks,nodefault);
두개의 변수를 이용해야합니다.
한 파일에 트랙을 100개를 만든다고 가정을 하고 TrackPosition에
100개의 공간을 할당하려합니다.
이것을 어떻게 초기화해서 메모리를 할당하여야 합니까.
아래와 같이 시도해 보았습니다.
MediaPlayer1->TrackPosition = new int[400] ;
그랬더니 아래와 같은 에러가 나옵니다.
Cannot Convert 'int *' to 'int'
아무래도 제가 TrackPosition과 Tracks를 잘못 해석한 것 같은데,
설명과 해결책을 부탁드립니다.
질문 셋.
금방 두번째 질문을 하다가 생각이 났습니다.
__property int Tracks = {read=GetTracks,nodefault);
만약 도움말에 이렇게 나와있다면 이걸 어떻게 해석해야합니까 ?
Tracks는 integer형의 변수임은 확실한데, { } 내부의 말이...
Tracks는 read만 할 수 있는 것인지.... ?
read=GetTracks 에서 GetTracks는 과연 무엇을 의미하는지.. ?
질문 넷.
하고 싶은 일 : TMediaPlayer를 통해서 TPanel에 동영상을 보이게 하려
합니다. TMediaPlayer에서 아직 파일을 Open하지 않았거나,
동영상이 아닌 음성파일을 Open하였을 경우에는 TPanel에 다른
사진(하하, 제 사진..)을 보이게 하려합니다.
제가 한 방법 : TPanel과 곂쳐지게 TImage를 놓아두고는 사진을 보고싶을
경우 TPanel의 Visible property를 false로 두어서 TImage를
보이게 하고 있습니다.
이상 초보빌더 천강협의 긴 질문을 마칩니다.
제 설명이 너무 부족하여 이해하기 어렵게 되어있으면, 다시 글 남겨주시면
코드를 더 붙여서 다시 올리겠습니다.
어허..
크리스마스를 맞이하여 하수에 대한 고수님들의 폭넓은 관심(??)을 부탁드립니다.
즐거운 하루 되십시요..
두주먹불끈맨,
taz1000
|