본문 바로가기
Cocos2D-x

[v3.3rc0] 안드로이드 단말에서 동영상파일 재생하는 방법

by CodeDiver 2014. 10. 31.

안드로이드 단말에서 동영상파일 재생하는 방법


아래의 소스로 안드로이드 단말에서 정상동작 확인했다. (중국산 저가 단말에서도 정상)

단, 기본기능만 지원한다. Play, Stop, Pause, Resume, Seek, IsPlaying 등.

재생위치 구하는 함수는 없으므로 직접 구현해야한다. (구현된 소스보면서 하면 쉽게 될듯.)

iOS에서는 테스트하지 않았지만, 비슷하게 구현하면 될것이다.


HelloWorld Scene cpp, h 압축:  

Cocos2d-x_v3.3_VideoPlaySRC.zip



<헤더파일에 추가>

#include "ui/UIVideoPlayer.h"


#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

using namespace cocos2d::experimental::ui;

#endif



// 멤버 함수 및 변수 추가

private:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

void videoEventCallback(Ref* p, VideoPlayer::EventType evt);

void playVideo(float dt);


VideoPlayer* _videoPlayer;

#endif




<cpp 파일에 추가>

void HelloWorld::createVideo()

{


#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)


Size visibleSize = Director::getInstance()->getVisibleSize();

Point origin = Director::getInstance()->getVisibleOrigin();


_videoPlayer = VideoPlayer::create();

_videoPlayer->addEventListener(CC_CALLBACK_2(HelloWorld::videoEventCallback, this));

_videoPlayer->setContentSize( Size(800, 600) );

_videoPlayer->setPosition(Vec2(100, 100)); // 동영상 위치

_videoPlayer->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); // 좌하단 앵커

_videoPlayer->setKeepAspectRatioEnabled(false); // 원본 종횡비 유지여부

_videoPlayer->setFileName("video.mp4"); 

_videoPlayer->setFullScreenEnabled(true); // true로 해야만 표시됨

_videoPlayer->setTag(TAG_VIDEOPLAYER);

//_videoPlayer->play();


this->addChild(_videoPlayer, 10);

CCLOGINFO("videoPlayer play!");


scheduleOnce(CC_SCHEDULE_SELECTOR(HelloWorld::playVideo), 0.0f);


#endif


}


#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

void HelloWorld::videoEventCallback(Ref* p, VideoPlayer::EventType evt)

{

char szEvt[100];

sprintf(szEvt, "video Event : [%d]", evt);

CCLOGINFO(szEvt);

}


void HelloWorld::playVideo(float dt)

{

_videoPlayer->setFullScreenEnabled(false);

_videoPlayer->play();

}


#endif