马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
mp4parser
简介
一个读取、写入利用音视频文件编辑的工具。
下载安装
- ohpm install @ohos/mp4parser
复制代码 OpenHarmony ohpm 环境设置等更多内容,请参考怎样安装 OpenHarmony ohpm 包
利用分析
视频合成
- import {MP4Parser} from "@ohos/mp4parser";
- import {ICallBack} from "@ohos/mp4parser";
- /**
- * 视频合成
- */
- private videoMerge() {
- let getLocalDirPath = getContext(this).cacheDir+"/";
- let that = this;
- let filePathOne = getLocalDirPath + "qqq.mp4";
- let filePathTwo = getLocalDirPath + "www.mp4";
- let outMP4 = getLocalDirPath + "mergeout.mp4";
- var callBack: ICallBack = {
- callBackResult(code: number) {
- that.btnText = "视频合成点击执行"
- that.imageWidth = 0
- that.imageHeight = 0
- if (code == 0) {
- AlertDialog.show({ message: $r('app.string.ok') })
- }
- else {
- AlertDialog.show({ message: $r('app.string.failed') })
- }
- }
- }
- MP4Parser.videoMerge(filePathOne, filePathTwo, outMP4, callBack);
- }
复制代码 视频裁剪
- import {MP4Parser} from "@ohos/mp4parser";
- import {ICallBack} from "@ohos/mp4parser";
- /**
- * 视频裁剪
- */
- private videoClip() {
- let getLocalDirPath = getContext(this).cacheDir+"/";
- let that=this;
- let sTime = "00:00:10";
- let eTime = "00:00:20";
- let sourceMP4 = getLocalDirPath+"qqq.mp4";
- let outMP4 = getLocalDirPath+"clipout.mp4";
- var callBack: ICallBack = {
- callBackResult(code: number) {
- that.btnText="视频裁剪点击执行"
- that.imageWidth=0
- that.imageHeight=0
- if (code == 0) {
- AlertDialog.show({ message: $r('app.string.ok') })
- }
- else {
- AlertDialog.show({ message: $r('app.string.failed') })
- }
- }
- }
- MP4Parser.videoClip(sTime, eTime, sourceMP4, outMP4, callBack);
- }
复制代码 音频合成
- import {MP4Parser} from "@ohos/mp4parser";
- import {ICallBack} from "@ohos/mp4parser";
- /**
- * 音频合成
- */
- private audioMerge() {
- let getLocalDirPath = getContext(this).cacheDir+"/";
- let that = this;
- let filePathOne = getLocalDirPath + "a.mp3";
- let filePathTwo = getLocalDirPath + "b.mp3";
- let outPath = getLocalDirPath + "mergeout.mp3";
- var callBack: ICallBack = {
- callBackResult(code: number) {
- console.log("mp4parser-->audioMerge--->end");
- that.btnText = "音频合成点击执行"
- that.imageWidth = 0
- that.imageHeight = 0
- if (code == 0) {
- AlertDialog.show({ message: $r('app.string.ok') })
- }
- else {
- AlertDialog.show({ message: $r('app.string.failed') })
- }
- }
- }
- MP4Parser.audioMerge(filePathOne, filePathTwo, outPath, callBack);
- }
复制代码 音频裁剪
- import {MP4Parser} from "@ohos/mp4parser";
- import {ICallBack} from "@ohos/mp4parser";
- /**
- * 音频裁剪
- */
- private audioClip() {
- let getLocalDirPath = getContext(this).cacheDir+"/";
- let that = this;
- let sTime = "00:00:00";
- let eTime = "00:00:10";
- let sourcePath = getLocalDirPath + "a.mp3";
- let outPath = getLocalDirPath + "clipout.mp3";
- var callBack: ICallBack = {
- callBackResult(code: number) {
- that.btnText = "音频裁剪点击执行"
- that.imageWidth = 0
- that.imageHeight = 0
- if (code == 0) {
- AlertDialog.show({ message: $r('app.string.ok') })
- }
- else {
- AlertDialog.show({ message: $r('app.string.failed') })
- }
- }
- }
- MP4Parser.audioClip(sTime, eTime, sourcePath, outPath, callBack);
- }
复制代码 视频批量合成
- import {MP4Parser} from "@ohos/mp4parser";
- import {ICallBack} from "@ohos/mp4parser";
- /**
- * 视频批量合成
- */
- private videoMultMerge() {
- let that = this;
- let getLocalDirPath = getContext(this).cacheDir+"/";
- let filePath = getLocalDirPath + "mergeList.txt";
- let outMP4 = getLocalDirPath + "mergeout3.mp4";
- var callBack: ICallBack = {
- callBackResult(code: number) {
- that.btnText2 = "视频合成点击执行"
- that.imageWidth = 0
- that.imageHeight = 0
- if (code == 0) {
- AlertDialog.show({ message: $r('app.string.ok') })
- }
- else {
- AlertDialog.show({ message: $r('app.string.failed') })
- }
- }
- }
- MP4Parser.videoMultMerge(filePath, outMP4, callBack);
- }
复制代码 音频批量合成
- import {MP4Parser} from "@ohos/mp4parser";
- import {ICallBack} from "@ohos/mp4parser";
- /**
- * 音频批量合成
- */
- private audioMultMerge() {
- let getLocalDirPath = getContext(this).cacheDir+"/";
- let that = this;
- let filePath = getLocalDirPath + "mergewavList.txt";
- let outPath = getLocalDirPath + "mergeout3.wav";
- var callBack: ICallBack = {
- callBackResult(code: number) {
- that.btnText2 = "音频合成点击执行"
- that.imageWidth = 0
- that.imageHeight = 0
- if (code == 0) {
- AlertDialog.show({ message: $r('app.string.ok') })
- }
- else {
- AlertDialog.show({ message: $r('app.string.failed') })
- }
- }
- }
- MP4Parser.audioMultMerge(filePath, outPath, callBack);
- }
复制代码 视频取帧
- import {ICallBack, IFrameCallBack, MP4Parser} from "@ohos/mp4parser";
- private getFrameAtTimeRang() {
- let getLocalDirPath = getContext(this).cacheDir + "/";
- let sourceMP4 = getLocalDirPath + "www.mp4";
- let that = this;
- var callBack: ICallBack = {
- callBackResult(code: number) {
- if (code == 0) {
- var frameCallBack: IFrameCallBack = {
- async callBackResult(data: ArrayBuffer, timeUs: number) {
- const imageSource = image.createImageSource(data)
- that.imagePixelMap = await imageSource.createPixelMap()
- }
- }
- MP4Parser.getFrameAtTimeRang("1000000", "9000000", MP4Parser.OPTION_CLOSEST, frameCallBack);
- }
- }
- }
- MP4Parser.setDataSource(sourceMP4, callBack);
- }
复制代码 调用FFmpeg指令
- let context = AbilityDelegatorRegistry.getAbilityDelegator().getAppContext()
- let getLocalDirPath = context.cacheDir + "/";
- let sTime = "00:00:01";
- let eTime = "00:00:02";
- let sourceMP4 = getLocalDirPath + "testvideo.mp4";
- let outMP4 = getLocalDirPath + "out.mp4";
- let callBack: ICallBack = {
- callBackResult(code: number) {
- expect(0).assertEqual(code)
- done()
- }
- }
- MP4Parser.ffmpegCmd("ffmpeg -y -i " + sourceMP4 + " -ss " + sTime + " -c copy -to " + eTime + " " + outMP4, callBack)
复制代码 接口分析
import {MP4Parser} from "@ohos/mp4parser";
- 视频合成 MP4Parser.videoMerge()
- 视频裁剪 MP4Parser.videoClip()
- 批量视频合成 MP4Parser.videoMultMerge()
- 音频合成 MP4Parser.audioMerge()
- 音频裁剪 MP4Parser.audioClip()
- 音频批量合成 MP4Parser.audioMultMerge()
- 设置视频源 MP4Parser.setDataSource()
- 视频取帧 MP4Parser.getFrameAtTimeRang()
- 制止取帧 MP4Parser.stopGetFrame()
- 调用FFmpeg指令 MP4Parser.ffmpegCmd()
束缚与限定
在下述版本验证通过:
DevEco Studio版本: 4.0 Release(4.0.3.413), SDK: (4.0.10.3) DevEco Studio 版本: 4.1 Canary(4.1.3.317),OpenHarmony SDK: API11 (4.1.0.36) DevEco Studio: NEXT Beta1-5.0.3.806, SDK: API12 Release (5.0.0.66)
目次结构
- |---- mp4parser
- | |---- entry # 示例代码文件夹
- | |---- library # mp4parser库文件夹
- | |---- MP4Parser.ets # 对外接口
- | |---- README.MD # 安装使用方法
复制代码 |