mp3 기본형 리스트 플레이어 > 그누보드5 스킨

그누보드5 스킨

좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.

mp3 기본형 리스트 플레이어 정보

게시판 mp3 기본형 리스트 플레이어

첨부파일

mp3.zip (413.3K) 82회 다운로드 2021-08-20 10:21:04
테스트한 버전5.4.9
호환 가능 버전아마도 모두

본문

1. mp3 기본형 리스트 플레이어입니다. 첨부파일로 기능합니다.

맨몸뚱아리 플레이어만 달랑 띄워넣기가 시각적으로 불편해서 이미지 안에 플레이어를 위치시켰습니다.

사운드가 끝나면 다음곡으로 자동넘기기가 되고 전후진 버튼을 클릭하면 자동넘기기도 함께 따라갑니다.

 

2. 리스트의 순서는 첨부파일의 업로드 순서와는 전혀 상관이 없습니다.

mp3 파일의 리스트는 무조건 숫자 알파벳 가나다 순입니다.

그러니 원본파일명에서 이름을 생각하고 올려주세요. 아래처럼 번호를 먹이는 것이 가장 간명합니다.

리스트에 나타나는 텍스트는 원본파일명 그대로 보여집니다. 물론 .mp3 라는 꼬랑지는 제외되구요.

 

01. 첫번째.mp3

02. 두번째.mp3

03. 세번째.mp3, ......

 

3. 플레이어의 바탕이 되는 이미지의 이름은 무조건 body.jpg 라고 줘야 합니다.

혹 gif 나 png 를 배경으로 사용하고 싶다면 gif 나 png 의 확장자명을 바꿔서 body.jpg 로 하면 됩니다.

body.jpg 역시 순서에 상관이 없습니다.

mp3 파일들의 중간부분에 업로드해도 되고 처음과 마지막 아무 순번이나 주어도 이상이 없습니다.

 

4. 다음은 글쓰기에 나타나는 옵션 설명입니다.

 

988289629_1629270390.54.jpg

 

1) 기본형에 체크합니다. 현재는 기본형 뿐입니다. 나중에 몇 개를 더 넣을 생각입니다.

 

2) 세로픽셀/가로픽셀은 body.jpg 의 세로픽셀과 가로픽셀을 단위없이 숫자만 / 의 양 옆으로 적어줍니다.

 

3) 간격픽셀은 각 요소별의 간격인데 단위없이 숫자만 적습니다. 이건 픽셀값입니다.

어떤 기능을 하는지 잘 모르겠으면 100 을 넣어보면 금방 알 수 있습니다.

 

4) 가로길이는 플레이어의 가로길이 퍼센트를 단위없이 숫자만 적습니다.

이건 body.jpg 의 가로길이를 100% 로 보았을 때가 기준입니다.

 

5) 투명도는 플레이어의 알파값입니다. 0을 주면 완전 투명이 되고 1을 주면 완전 불투명이 됩니다.

저는 0.5 를 주었습니다.

 

플레이어는 기본적으로 이미지의 정중앙에 위치합니다. 따라서...

 

6) 상단마진은 플레이어의 top 포지션입니다. 단위는 퍼센트이지만 단위를 적을 필요는 없습니다.

정중앙을 중심으로

아래로 30% 이동하고 싶으면 30을, 위로 30%를 이동하고 싶으면 음수를 줘서 -30을 입력합니다.

 

7) 좌단마진은 플레이어의 left 포지션입니다. 단위는 퍼센트이지만 단위를 적을 필요는 없습니다.

정중앙을 중심으로

우측으로 30% 이동하고 싶으면 30을, 좌측으로 30%를 이동하고 싶으면 음수를 줘서 -30을 입력합니다.

 

8) 본문을 사용하기 싫으면 아무 글자나 적어주고 본문 숨기기에 체크합니다.

 

5. 상하단에 이미지스킨을 쓸 수 있습니다.

첨부파일의 이름을 head.jpg 로 올리면 상단스킨이 되고 foot.jpg 로 올리면 하단스킨이 됩니다.

이 원본파일명이 없으면 자동으로 그 영역은 진공이 됩니다.

이것 역시 gif 나 png 등을 사용하고 싶으면 확장자를 바꾸는 방법을 쓰세요.

 

-------------------

 

순정 그누보드 5.4 버전 이외의 빌더나 테마는 결과를 장담할 수 없습니다.

이미지 크기는 가로를 960픽셀 정도로 하는 것이 좋습니다. 이미지는 16:9 비율로 만드는 것이 가장 무난합니다.

크롬과 안드로이드에서만 확인하였습니다.

기타 다른 시스템에서 안 되는 것 역시 제가 배려하지 못합니다. 이해해 주시길요.

 

--------------------

 

플레이어가 안 된다는 분이 계셔서 순수 자바 스크립트 코드를 첨부합니다. 자바 스크립트 전용 게시판에서 사용하시길요. 옵션은 주석을 보면 금방 알 수 있습니다. 여기에는 첫곡의 랜덤 옵션을 넣었습니다.

소스는 http://www.mediaplayer.kr/main/bbs/html_editor.php 에 붙여넣기하고 확인해 보세요.

 


<script>
mediaList_1 = ["https://blog.kakaocdn.net/dn/BHP32/btrcHD0bM3V/4jjMou5AV4PHq9N81H2tR1/tfile.mp3", "01. Clementine - Angel"];
mediaList_2 = ["https://blog.kakaocdn.net/dn/bU6BBL/btrcFU2GVvT/tiBDDM6CDYECOxc9kTVe21/tfile.mp3", "02. Clementine - Continent Bleu"];
mediaList_3 = ["https://blog.kakaocdn.net/dn/sbWIN/btrcMF31FvT/tRH9GPZbZp5ew1P0jT6QDk/tfile.mp3", "03. Clementine - Kokomo"];
mediaList_4 = ["https://blog.kakaocdn.net/dn/Qj3Fg/btrcFWlW3lw/0QTxRBYqsyzISDORFFQUk0/tfile.mp3", "04. Clementine - Seasons In The Sun"];
mediaList_5 = ["https://blog.kakaocdn.net/dn/bZUv6i/btrcMZ8ZU1G/KrQBt8AM7RvBhcTmc4J240/tfile.mp3", "05. Clementine - So Nice"];
mediaList_6 = ["https://blog.kakaocdn.net/dn/pQTpc/btrcEvWpIPM/JTQD2oRhky4zyck59uYT40/tfile.mp3", "06. Clementine - Une Fille Comme Ci"];
backImage = "https://blog.kakaocdn.net/dn/dKf6IB/btrcMFpjBxH/ndzkZBQYge3BfmSokB9Kmk/img.jpg"; // 배경이미지
hwRatio = 400/960; // 배경이미지 세로/가로
mediaGap = "2px"; // 간격
playerRandom = 0; // 0은 첫곡랜덤, 1은 1번곡부터, 4는 4번곡부터
playerWidth = "40%"; // 플레이어 크기
playerTop = "20%"; // 플레이어 상단 포지션 (0%:중앙)
playerLeft = "40%"; // 플레이어 좌단 포지션 (0%:중앙)
playerAlpha = 0.5; // 플레이어 투명도 (0~1)
headImage = "https://blog.kakaocdn.net/dn/yA9Vr/btrcMHm4Qqu/DU1ztCfOhhTonZvKaNkwmK/img.jpg"; // 상단스킨 미적용시 - headImage = "";
footImage = ""; // 하단스킨 미적용시 - footImage = "";
</script>
<style>
@import url(http://cdn.jsdelivr.net/font-nanum/1.0/nanumbarungothic/nanumbarungothic.css);
#titleTable { color:#000000; font-family:'Nanum Barun Gothic'; padding:12px; background-color:#f7d7e4; border:1px solid #cccccc; }
#listTable { color:#000000; font-family:'Nanum Barun Gothic'; width:100%; background-color:#cccccc; }
.listTd { padding:12px; text-align:center; cursor:pointer; }
#playerDiv { width:100%; display:flex; justify-content:center; align-items:center; background-size:contain; }
</style>
<script>
for (mediaTotal = 0; this["mediaList_" + (mediaTotal + 1)]; mediaTotal++);
goMode = 1;
function playerMode() {
    playerDiv.innerHTML = "<audio id=mediaPlayer style=display:block;width:" + playerWidth + ";margin-top:" + playerTop + ";margin-left:" + playerLeft + ";opacity:" + playerAlpha + " src=" + this['mediaList_' + (arguments[0])][0] + " controls autoplay controlsList=nodownload onended=mediaMode(goMode?'next':'prev')></audio>";
    listTitle.innerHTML = "<strong>" + this['mediaList_' + (arguments[0])][1] + "</strong>";
    for (media = 1; media <= mediaTotal; media++) {
        if (media == mediaNumber) {
            this["listMedia_" + media].innerHTML = "<strong>" + this['mediaList_' + media][1] + "</strong>";
            this["listMedia_" + media].style.backgroundColor = '#d5e6f9'
        }
        else {
            this["listMedia_" + media].innerHTML = this['mediaList_' + media][1];
            this["listMedia_" + media].style.backgroundColor = '#f7d7e4';
        }
    }
}
function mediaMode() {
    if (arguments[0] == 'next') playerMode(mediaNumber = mediaNumber == mediaTotal ? 1 : mediaNumber + 1), goMode = 1;
    else if (arguments[0] == 'prev') playerMode(mediaNumber = mediaNumber == 1 ? mediaTotal : mediaNumber - 1), goMode = 0;
    else playerMode(mediaNumber = arguments[0]);
}
</script>
<div id=mediaDiv>
    <div id=headSkin></div>
    <table id=titleTable style=width:100% cellpadding=0 cellspacing=0>
        <td style=text-align:left;cursor:pointer onclick=mediaMode('prev') onmouseover=style.color='#c00000' onmouseout=style.color='#000000'>◀◀</td>
        <td id=listTitle style=text-align:center></td>
        <td style=text-align:right;cursor:pointer onclick=mediaMode('next') onmouseover=style.color='#c00000' onmouseout=style.color='#000000'>▶▶</td>
    </table>
    <div id=playerDiv oncontextmenu='return false' onselectstart='return false' ondragstart='return false'></div>
    <table id=listTable cellpadding=0 cellspacing=1>
        <script>
        for (media = 1; media <= mediaTotal; media++) {
            document.write("<tr><td id=listMedia_" + media + " class=listTd></td></tr>");
            this["listMedia_" + media].listNumber = media;
            this["listMedia_" + media].onclick = function() { mediaMode(this.listNumber); }
            this['listMedia_' + media].onmouseover = function() { this.style.color = '#c00000'; }
            this['listMedia_' + media].onmouseout = function() { this.style.color = '#000000'; }
        }
        titleTable.style.fontSize = listTable.style.fontSize = ("win16win32win64macmacintel").indexOf(navigator.platform.toLowerCase()) < 0 ? '13px' : '16px';
        </script>
    </table>
    <div id=footSkin></div>
</div>
<script>
onresize = function() { playerDiv.style.height = playerDiv.offsetWidth * hwRatio + "px"; }
titleTable.style.marginBottom = listTable.style.marginTop = playerDiv.style.marginTop = mediaGap;
playerDiv.style.backgroundImage = "url(" + backImage + ")";
headSkin.innerHTML = "<img src=" + headImage + " style=width:100%;display:block;margin-bottom:" + mediaGap + " onerror=headSkin.innerHTML=''>";
footSkin.innerHTML = "<img src=" + footImage + " style=width:100%;display:block;margin-top:" + mediaGap + " onerror=footSkin.innerHTML=''>";
this["listMedia_" + (playerRandom == 0 ? Math.floor(Math.random() * mediaTotal + 1) : playerRandom)].onclick();
onresize();
</script>
추천
15

댓글 전체

완전 제스탈입니다.
정말 멋진플레이어 고맙습니다.
차에서 들을 곡 목록 골라야쥐~~

오랜만에 조덕배 노래 들으며 댓글 달고 있어요~~^^;

랜덤플레이는 무리겠죠~? ㅋ
pc 나 모바일이나 스킨 디렉토리에 얐는 mp3_basic.php 는 동일한 파일입니다.
가장 아랫부분을 보면....
listMedia_1.onclick(); 이 있는데 이걸 아래처럼 고쳐주면 첫곡이 랜덤이 됩니다.
this["listMedia_" + Math.floor(Math.random() * mediaTotal + 1)].onclick();
이걸 여분필드에서 선택하게 하려면
this["listMedia_" + <?php echo $view['wr_8']; ?>)].onclick(); 으로 주고...
write.skin.php 에서 라디오버튼이나 셀렉트를 만들고 아래 두개의 value 에서 하나를 선택하여 그 값을 넘겨주면 될 거에요.
value = "1"
value= "Math.floor(Math.random() * mediaTotal + 1)"
한곡마다 랜덤이 되게 하는 건 별로 권하고 싶지 않습니다. 그럼 들은 곡이 다음 두번째에 또 나올 수고 있고 세번째에도 나올 수 있고... 코드도 별로 어렵지 않지만 효과는 별무신통입니다.
그래서 랜덤은 첫곡 입방시 랜덤 후 거기서부터 순번 재생이 가장 효과가 좋습니다.
산타의 선물 같습니다. 무심하게 문앞에 툭 던져놓고 생색내지도 않는...
아직 적용해보지 않았지만 매우 유용해 보입니다.
좋은 스킨과 도움이 되는 팁, 늘 감사하고 있습니다.
^^
이걸 만들면서 생각한 것이 body.jpg 이름을 사용할 수 있는 것처럼 face.jpg 를 그렇게 사용하면서 이 face.jpg 를 list.php 에서 썸네일로 등록하면 괜찮을 것 같다는 생각이 들더군요.

원본명 face.jpg 의 절대주소를 여분필드로 담아 list.php 로 넘겨주면 되긴 하는데 문제는 write.php 안에서 아작스로 처리해야 해요.
안 그러면 글쓰기 모드에 두번 입방해야 하거든요.

이것저것 잔머리로 궁리하다가 write.php 에서 날아온 face.jpg 의 절대주소를 view.php 에서 여분필드로 담아 서버로 다시 날리면 될 것 같다는 생각이 드네요.

내일은 그걸 갖고 쪼물딱거려야 겠습니다.ㅋ
ajax, w3schools.com에 나오는 아작스 잠깐 보았는데요. 아작스로 직접 프로그래밍하는 실력이 부럽습니다.
비티주리님의 플러그인 https://sir.kr/g5_plugin/9007 다각형 mp3 트랙바 타이머 플레이어을 이용해서 한 페이지에 두개 이상 여러개 나오게 하는 페이지를 만들려고 하고있는데요. 자바스크립트는 초보라 헤메고 있습니다.
이 플러그인을 사용한 게시판도 만드는 것이 가능한지 궁금합니다.
각각의 다른 사진과 다른 mp3를 넣고 하는 식으로 말입니다.
가능이야 하겠지만 손볼 부분이 꽤 있죠.
이를테면 모바일을 생각해야 하기 때문에 단위를 픽셀에서 퍼센트로 모두 바꿔야 합니다.

근데 왜 그렇게 어렵게 생각하시나요? 플레이어 하나당 html 문서를 하나씩 만들고 플레이어 갯수대로 아이프레임으로 불러오면 가장 쉬운데...
아니면 php 하나만 만들고 바뀔 부분만 겟변수 처리해도 되고...
플레이어 "왁꾸"(?)는 예전에 짜 둔 것이 있어서요.

https://sir.kr/g5_skin/46196
https://sir.kr/g5_skin/45671

저 틀을 처음 만들 때가 징그러울 정도로 싫었거든요. 제가 제일 귀찮아 하는 것 중 하나가 css 퍼블리싱이다 보니...
일단 기본 틀에 자바 스크립트 넣는 건 시간이 걸려도 재미가 있어서 고생이랄 것두 없답니다.
먼저 좋은 자료 감사드립니다 ^^

문서를 하나 만든다음 위에 게시글 처럼
01. 1.mp3
02. 2.mp3
body.jpg
(1.mp3  2.mp3를 첨부파일로 업로드 했습니다  )
텍스트 문서를 만들어서 첨부파일로 업로드


글쓰기 옵션은 위에 본문글에서와 동일하게 적용

body.jpg 게시판 글 쓰기에서 첨부파일로 업로드 했습니다

근데 정상적으로 적용이 안되고
기본형에 체크를 하고 글쓰기 했습니다,
원형트랙바로 체크가 자꾸 이동되어버려서 ..
잘 적용이 안되네요..ㅠ.ㅠ
또 뭔가 놓치고 있는게 있는지 싶네요. 다른분은 아무런 이상이 없나 봐요. ??
원형트랙바로 이동하는 건 지금은 당연합니다. 모두 같은 value 를 주었으니까요.
그런데 텍스트파일은 왜 업로드 하시죠? mp3 와 이미지파일만 업로드하면 되는데...
혹 브라우저와 그누버전이 어찌 되시는지요...
이건 크롬에 5.4 이상 버전이거든요.
텍스트로 기능하신다고 해서,ㅎㅎㅎ텍스트 파일을,,  ㅠ.ㅠ
비타주리님 댓글을 보고 ,,,,
게시판 글 열고 동일하게 적고 글쓰기 했습니다

그누보드는 지금 최신 버전, 크롬브라우저를 사용 했습니다
아무것도 적용안한 순정버젼,,입니다,
역시나,,안 되네요.

혹시. 다른곳에 소스를 추가해야 된다거나,,빠진것이 있나요.

위에 해당 스킨 다운로드 해서 압축풀고 해당경로에 올림
아이구,,,, 오늘 하루종일 업무때문에 ,,이제서야 댓글 봤습니다
너무 수고스러움에 감사드려요....
찬양곡을 이쁘게 만들 수 있게 되어서 고맙습니다,,,
저는 개인서버는 안 써요. 관리하기 귀찮아서....ㅋ
닷홈에서 도메인 하나 사면 무료로 주는 웹호스팅을 씁니다.
1년에 2만원 정도... php는 7.2구요.

그리고 카페24에서 1테라 월 10만원짜리 단독웹호스팅을 사용하구요. 이건 오직 파일업로드만 하는 곳이에요. 게시판을 깔 필요도 없고 파일만 올려 사용합니다. .htaccess 로 트래픽을 줄 사이트를 지정하지요.

마지막으로 네이버 클라우드 2테라 월 1만원입니다. 자료보관용이죠.

공짜 유틸은 안 쓰고 무조건 정품구매합니다. 그래서 포토샵도 아직 7.0 입니다.ㅋ

공개용 파일은 주로 다음블로그나 티스토리에 첨부파일로 올려 공유합니다. 파일개당 용량을 10메가씩 줍니다만. 음원이나 동영상은 저작권 필터링이 걸릴 수 있습니다. 물론 카페24나 네이버 클라우드에는 같이 올려 놓지요. 백업용으로...
댓글에 주신 정보에 귀가 팔랑팔랑@@
닷홈에 달려가서 도메인 하나 사고 무제한웹호스팅 하나 구했어요..
갠 서버랑 잘 연결해서 사용하는것도 좋을것 같다는 생각에 실행했습니다,, 정보 감사합니다
찬송가를 걸어도 괜찮지요.
저는 첨부파일로 걸기 전에 먼저 외부파일 주소를 이용한 js 코드를 먼저 만들어 놓고 그 이후 첨부파일 적용에 들어가기 때문에 항상 코드가 두개에요. 그래야 js 전용게시판에 사용할 수가 있습니다.
모바일로 보니 가로 모드는 괜찮은데 세로 모드는 목이 너무 길어지네요.ㅜㅠ
나중에는 상단부터 하단까지 이미지 통스킨을 써야 할 것 같습니다.
전체 1,202 |RSS
그누보드5 스킨 내용 검색 게시판에서

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT