本文演示如何开发一个自定义插件,来实现视频格式的转换。由于使用 iPhone 拍摄的视频是 mov 格式的,为了让视频能够在多平台下都能顺利播放,我们实现一个将视频转换为 mp4 格式的自定义插件。
1,实现原理
(1)通过 AVAssetExportSession 我们可以实现视频格式的转换,除了转成mp4编码格式,还有很多其它格式可供选择。
(2)除了编码格式外,AVAssetExportSession 还可以设置各种压缩质量。(本样例使用高质量,即不对其压缩。如果想要让生成的视频体积小点便于传输,可以使用低一些质量级别)
2,自定义插件的创建
我们随便在本地建立一个文件夹(比如叫 HanggeMp4CovertPlugin),在里面放置插件的相关功能实现代码和配置文件。目录结构如下:
下面分别介绍各个文件的内容和功能:
(1)HanggeMp4CovertPlugin.swift
import Foundation
import CoreLocation
import MobileCoreServices
import AssetsLibrary
import AVFoundation
@objc(HWPHanggeMp4CovertPlugin) class HanggeMp4CovertPlugin : CDVPlugin {
//视频转换
func covertVideo(command:CDVInvokedUrlCommand)
{
//返回结果
var pluginResult:CDVPluginResult?
//获取参数
let videoPath = command.arguments[0] as! String
//获取原视频资源
let videoURL = NSURL(fileURLWithPath: videoPath)
let avAsset = AVURLAsset(URL: videoURL, options: nil)
//获取当前时间
let now = NSDate()
let dformatter = NSDateFormatter()
dformatter.dateFormat = "yyyyMMddHHmmss"
let fileName = "(dformatter.stringFromDate(now))(arc4random()%100)"
//转码后的视频保存路径(tmp目录下)
let destinationPath = NSTemporaryDirectory() + "(fileName).mp4"
let newVideoPath: NSURL = NSURL(fileURLWithPath: destinationPath as String)
//开始转码
let exporter = AVAssetExportSession(asset: avAsset,
presetName:AVAssetExportPresetHighestQuality)!
exporter.outputURL = newVideoPath
exporter.outputFileType = AVFileTypeMPEG4
exporter.shouldOptimizeForNetworkUse = true
exporter.exportAsynchronouslyWithCompletionHandler({
print("转换成功!")
print("新视频地址:(newVideoPath.relativePath)")
pluginResult = CDVPluginResult(status:CDVCommandStatus_OK,
messageAsString: newVideoPath.relativePath)
//发送结果
self.commandDelegate.sendPluginResult(pluginResult, callbackId: command.callbackId)
})
}
}
(2)hangge-mp4-covert-plugin.js
'use strict';
var exec = require('cordova/exec');
var HanggeMp4CovertPlugin = {
covertVideo: function(videoPath, onSuccess, onFail) {
return exec(onSuccess, onFail, 'HanggeMp4CovertPlugin', 'covertVideo', [videoPath]);
}
};
module.exports = HanggeMp4CovertPlugin;
(3)plugin.xml
version="0.1">
3,自定义插件的安装
(1)由于插件是使用Swift语言写的,首先在“终端”中进入到项目文件夹,并运行如下命令添加 Swift 支持插件:
cordova plugin add cordova-plugin-add-swift-support
(2)假设我们做的自定义插件是在用户“文稿”目录下,运行如下命令把这个插件添加到工程中来:
cordova plugin add ~/Documents/HanggeMp4CovertPlugin
(3)以后如果想移除这个自定义插件,运行如下命令即可:
cordova plugin rm hangge-mp4-covert-plugin
4,自定义插件的使用样例
修改首页 index.html 为如下内容。点击按钮后,首先会调用 MediaCapture 插件来拍摄录制实现,录制完毕后。会调用我们的自定义转码插件,将刚才录制好的视频转换为 mp4 格式并保存到 tmp 目录下。最后在页面上显示这个视频的地址。
火柴人绳索英雄2无限金币版 (Stickman Rope Hero 2)安卓版v2.2v3.4.2
下载奥特曼之格斗超人内测版本 安卓最新版v11.0.0
下载奥特曼之格斗超人百度版 安卓版v11.0.0
下载奥特曼之格斗超人4399游戏盒版 最新安卓版v11.0.0
下载德凯奥特曼D闪光剑模拟器 安卓版v1.0
德凯奥特曼D闪光剑模拟器是一个非常有趣的奥特曼变身模拟器,可
亚刻觉醒器 安卓版v1.1
亚刻觉醒器模拟器是一个非常有趣的奥特曼变身模拟器,为喜欢亚刻
海上餐厅无限金币版 v1.0
海上餐厅免广告版是游戏的破解版本,在该版本中为玩家去除了广告
阿西美女室友竟然全解锁版 v1.0.2
阿西美女室友竟然内置菜单版是游戏的破解版本,在该版本中为玩家
我是大东家正版 最新版v1.2.738
我是大东家正版是一款放置类模拟经营手游,玩家将回到古代成为家