cocos2d-x 3.0 播放MP4视频

猴子原创,欢迎转载。

转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢。

原文地址: http://www.cocos2dev.com/?p=545

非常久曾经写的一个2dx播放MP4视频的教材。有网友反映已经不能用了,今天晚上写了个简单的2dx播放视频类。使用的是cocos2dx 3.0。

类说明:
LHVideoPlayerImplCpp.h/mm // cocos2dx中使用的播放MP4接口
LHVideoPlayerImpl.h/m // videoPlayer的oc接口
LHVideoPlayer.h/m // videoPlayer的实现。调用MPMoviePlayerController播放MP4
LHVideoOverlayView.h/m // videoPlayer的上层操作层,有跳过影片button。

我就功能点而言,介绍当中的两个类。

第一个是LHVideoPlayerImplCpp.h/mm文件。这个是负责给2dx调用的。

该类有两个静态方法:

class LHVideoPlayerImplCpp {
public:
    /**
     * 開始播放MP4视频
     * name 视频名称。不要带后缀".mp4"。

(比方文件是test.mp4, 那么name就传"test")
     * frameRect 视频显示的区域。全屏(Rect(0, 0, visibleSize.width, visibleSize.height))
     */
    static void playMP4WithName(const char* name, cocos2d::Rect frameRect);

    /**
     * 设置跳过影片buttontitle,默认无跳过影片功能
     */
    static void setSkipTitle(const char* title);
};

第二个是LHVideoPlayer.h/m,这个是负责播放MP4。
1、这种方法是播放MP4。凝视非常清楚。

- (void)playMP4WithName: (NSString *)name VideoFrame:(CGRect)rect
{
    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];

    // 获取视频文件的名称
    NSString *url = [[NSBundle mainBundle]pathForResource:name ofType:@"mp4"];
    // 初始化player
    _player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:url]];
    [keyWindow.rootViewController.view addSubview: [_player view]];

    // 设置player样式
    [_player setControlStyle: MPMovieControlStyleNone];
    [[_player view] setFrame: rect];

    // 当MP4完毕播放的回调
    [[NSNotificationCenter defaultCenter]
     addObserver:self selector:@selector(movieFinishedCallback:)
     name:MPMoviePlayerPlaybackDidFinishNotification object:_player];

    // 開始播放影片
    [_player play];

    // 上层操作层
    _videoOverlayView = [ [LHVideoOverlayView alloc] initWithFrame: rect];
    [keyWindow.rootViewController.view addSubview: _videoOverlayView];
}

2、这种方法是播放结束之后,移除播放view。

- (void)removePlayer:(MPMoviePlayerController*)player
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player];

    [player.view removeFromSuperview];
    [_player release];
    _player = nil;

    [_videoOverlayView removeFromSuperview];
    [_videoOverlayView release];
    _videoOverlayView = nil;
}

3、播放完毕,通知外界。

playerPlayFinished 这种方法是空的,没有通知外界。

我看了下,感觉没什么须要。所以没加。

用法:

1、导入头文件
#include “LHVideoPlayerImplCpp.h”

2、開始调用接口,如果你要播放的是“loading.mp4”
Size visibleSize = Director::getInstance()->getVisibleSize();
LHVideoPlayerImplCpp::playMP4WithName(“loading”, Rect(0, 0, visibleSize.width, visibleSize.height));
LHVideoPlayerImplCpp::setSkipTitle(“Skip”);

3、影片结束之后,会自己主动移除视图。

git地址:https://github.com/sunny-liu/Code/tree/master/cocos2dx_3.0_mp4

时间: 2025-01-11 14:14:37

cocos2d-x 3.0 播放MP4视频的相关文章

html5播放mp4视频代码

1.nginx支持flv和mp4格式播放 默认yum安装nginx centos7安装nginx时候应该是默认安装nginx_mod_h264_streaming模块的 # nginx -V查看是否安装nginx_mod_h264_streaming模块 nginx在新版本中已经支持了--with-http_mp4_module --with-http_flv_module这2个模块即可 # vi /etc/nginx/nginx.conf server { listen       80 de

c# 海康威视 Winform播放mp4视频

最近有个视频播放系统,需要对海康的mp4格式视频进行播放,由于普通播放器无法对该视频进行播放原因是海康对视频进行了自己的编码,需要相应的解码才可以对视频进行播放. 下面是对海康威视视频播放的c#代码(需要从海康官网下载播放库). 一,这个是核心库通过c#对海康提供的动态链接库dll方法的封装. 1 public class PlayCtrlSDK 2 { 3 #region 解码库 4 [SecurityCritical] 5 [DllImport("PlayCtrl.dll")] 6

openCV1.0 播放AVI视频并实现进度条

#include "cv.h"#include "highgui.h" int g_slider_position = 0;CvCapture* g_capture = NULL; void onTrackbarSlide(int pos) { cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos);} int main(int argc, char **argv){ cvNamedWindow(&q

flash播放mp4插件轻松搞定播放视频问题

1.使用SWFObject插入Adobe Flash媒体资源兼容性好代码 <script src="http://js.kuwo.cn/yinyue/webmv/swfobject.js"></script>SWFObject是一个用于在HTML中方便插入Adobe Flash媒体资源(*.swf文件)的独立.敏捷的JavaScript模块.该模块中的JavaScript脚本能够自动检测PC.Mac机器上各种主流浏览器对Flash插件的支持情况.它使得插入Fla

Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型

转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 原因是在IIS中没有添加 mp4 这种文件格式 解决办法: 打开 MIME 类型,然后右键 添加

Android[安德鲁斯] 文本Air Video 远程播放电脑视频

苹果iOS下列.目前应用Air Video,能力iOS由Wifi远程直接播放电脑视频,无需看视频复制到手机.非常好用!最近使用Android打电话.展望类别似应用,找了很长一段时间没有找到.在仔细的思考AirVideo工程,视频站点类似,在Android以下应该也能够有类似的方法实现. 今日在华为荣耀6上面最终验证通过了一个完美的方案.赶紧放上来和有相同须要的朋友们分享分享. 先说一下Air Video的工作原理: 1) 在Windows以下安装Air Video Serverserver,并设

播放本地视频

1.播放本地视频 PlayLocationVideoInSDActivity.java 关键点1: String path = "/sdcard/TZH.mp4"; //String path2 = ""+Environment.getExternalStorageDirectory()+"/TZH.mp4";//等价上面的地址 关键点2:控制进度条 package com.example.videoplaydemo; import androi

unity 播放外部视频

摘要: Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象. 1.Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常相像,因为播放视频用到的MovieTexture属于贴图Texture的子类 //电影纹理 publi

atitit.mp4&#160;视频文件多媒体格式结构详解

atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个“box”组成的,2 4. 典型简化mp43 5. Fragments5 6. ref6 7. 具体列表6 8. Ref29 MP4文件格式详解(ISO-14496-12/14) Author:Pirate Leo Email:[email protected] 1. 一.基本概念 1. 文件,由许多Box和FullBox组成. 2. Box,每个Box由Header和Data组