|
|
| TopPage > swftoolsを使ってみる > swftoolsを使ってみる[02] |
| swftoolsを使った自作flash動画プレイヤーを作ってみる |
![]() |
| W:H = 300pic : 22pic |
![]() |
| W:H = 40pic : 18pic |
| プレイボタン | ポーズボタン | ストップボタン |
![]() |
![]() |
![]() |
|
btn_play01.png W:H = 40pic : 18pic |
btn_pause01.png W:H = 40pic : 18pic |
btn_stop01.png W:H = 40pic : 18pic |
.flash filename="njaFlsPlayer00a.swf" fps=25 bbox=300x269
bbox=300x269の300は、menu_bar.pngのWと同じ
269は、動画部分のアスペクト比を4:3としmenu_barを2本分下に置いたときの値
.png menubar "menu_bar300x22.png"
.png play_btn "btn_play01.png"
.png pause_btn "btn_pause01.png"
.png stop_btn "btn_stop01.png"
####
.font Sans "DejaVuLGCSans.swf"
####
## exsample for check position and size
## .edittext state_text text="Stop" font=Sans readonly
## variable="cur_state_text" size=14% width=74 height=14 align=center border color=green
## .edittext fnum_text text="[0 frame]" font=Sans readonly
## variable="cur_frame_text" size=14% width=100 height=14 border color=green
## .edittext time_text text="[0 sec]" font=Sans readonly
## variable="cur_time_text" size=14% width=98 height=14 border color=green
↑最初はこんな感じでborderを入れて位置を決めてから↓borderを外す
インジケータ文字列の設定
.edittext state_text text="Stop" font=Sans readonly
variable="cur_state_text" size=14% width=74 height=14 align=center color=green
.edittext fnum_text text="[0 frame]" font=Sans readonly
variable="cur_frame_text" size=14% width=100 height=14 color=green
.edittext time_text text="[0 sec]" font=Sans readonly
variable="cur_time_text" size=14% width=98 height=14 color=green
####
各インジケータの枠
.box state_box 76 16 color=green fill=black
.box fnum_box 102 16 color=green fill=black
.box time_box 100 16 color=green fill=black
## movie file ##
################
動画ファイル
.swf movie1 "sample_movie00.swf"
## put menu bar and indicator ##
################################
.put menubar pin=center x=150 y=258
####
.put state_box pin=center x=42 y=234
.put fnum_box pin=center x=136 y=234
.put time_box pin=center x=243 y=234
####
.put state_text pin=center scalex=74 scaley=16 x=42 y=234
.put fnum_text pin=center scalex=100 scaley=16 x=136 y=234
.put time_text pin=center scalex=98 scaley=16 x=243 y=234
####
## play button add action ##
.button pl_btn
.show play_btn as=area
.show play_btn as=idle
.show play_btn as=hover
.show play_btn as=pressed
.on_press:
PlayFunc();
.end
.end
.put pl_btn pin=center x=22 y=258
## pause button add action##
.button pa_btn
.show pause_btn as=area
.show pause_btn as=idle
.show pause_btn as=hover
.show pause_btn as=pressed
.on_press:
PauseFunc();
.end
.end
.put pa_btn pin=center x=64 y=258
## stop button add action ##
.button st_btn
.show stop_btn as=area
.show stop_btn as=idle
.show stop_btn as=hover
.show stop_btn as=pressed
.on_press:
StopFunc();
.end
.end
.put st_btn pin=center x=106 y=258
#### function in action script ####
###################################
.action:
var pause_state;
var total_fnum;
var cur_fnum;
var frame_rate;
var total_time;
var cur_time;
frame_rate = 25;
total_fnum = movie1._totalframes;
total_time = total_fnum / frame_rate;
///////////////////
function PlayFunc()
{
movie1.gotoAndplay(1);
pause_state = "run";
cur_state_text = "Play";
一定間隔でインジケータのUpdateと動画のLoopを止めるモニタと判断
idinterval = setInterval(UpdateCounter, 25);
}
///////////////////
function StopFunc()
{
movie1.gotoAndStop(1);
cur_state_text = "Stop";
}
function PauseFunc()
{
if ( pause_state == "run" )
{
movie1.Stop();
pause_state = "pause";
cur_state_text = "Pause";
}
else
{
movie1.play();
pause_state = "run";
cur_state_text = "Play";
}
}
function UpdateCounter()
{
cur_fnum = movie1._currentframe;
cur_time = int(cur_fnum / frame_rate);
cur_frame_text = cur_fnum + "/" + total_fnum + " frame";
cur_time_text = cur_time + "/" + total_time + " sec";
動画のLoopを止めるモニタと判断
if ( cur_fnum >= total_fnum )
{
movie1.stop();
}
}
UpdateCounter();
.end
########
.frame 1
.put movie1 pin=center x=153 y=111 scalex=280 scaley=210
########
.frame 2
.action:
movie1.stop();
.end
.end
|
[hoge]$ ffmpeg -i sample_movie00.avi -r 25 -b 256k sample_movie00.swf .... |
[hoge]$ swfc njaFlsPlayer00a.swf |
<object type="application/x-shockwave-flash"
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
width="300" height="269">
<param name="movie" value="njaFlsPlayer00a.swf">
<param name="loop" value="false">
<param name="bgcolor" value="#000000">
<embed src="njaFlsPlayer00a.swf"
width="300" height="269" type="application/x-shockwave-flash"
bgcolor="#000000"
loop="false">
</embed>
</object>
|
| TopPage > swftoolsを使ってみる > swftoolsを使ってみる[02] |