【仓颉三方库】音视频开发—— mp4parser4cj

39 篇文章 0 订阅
39 篇文章 0 订阅

介绍

一个读取、写入操作音视频文件编辑的工具。

特性

  • 🚀 视频合成,裁剪,批量合成

  • 🚀 音频合成,裁剪,批量合成

路线

源码目录

.
├── README.md
├── doc
│   ├── assets
│   ├── cjcov
│   ├── feature_api.md
│   └── design.md
├── lib
├── src
│   ├── fileutils.cj  
│   └── mp4parsers.cj    
│       
└── test
    ├── HLT
    ├── LLT
    └── UT

  • doc 存放库的设计文档、使用文档、LLT 用例覆盖报告
  • src 是库源码目录
  • test 存放 HLT 测试用例、LLT 自测用例和 UT 单元测试用例
  • lib 是存放源码动态库

接口说明

主要是核心类和成员函数说明,详情见 API

使用说明

编译

ffmpeg编译

进入ffmpeg根目录,请先在Linux或mysys2中执行以下命令

sed -i '/PROGS)/,/endif/d' Makefile && sed -i 's/%$(PROGSSUF)_g$(EXE/lib%$(PROGSSUF)$(SLIB/' Makefile && sed -i '/$(OBJS-$\*) $(FF_EXTRALIBS)/a \\t$(STRIP) $@' Makefile
sed -i 's/=%$(PROGSSUF).*$(EXESUF)/=lib%$(PROGSSUF)$(SLIBSUF)/g' fftools/Makefile && sed -i 's/$(1)$(PROGSSUF)_g$(EXESUF)/lib$(1)$(PROGSSUF)$(SLIBSUF)/g' fftools/Makefile && sed -i 's/$(LDFLAGS-$(1))/$(LDFLAGS-$(1)) -shared/' fftools/Makefile
set -i 's/int main/int ffmpeg_exec/' fftools/ffmpeg.c
sed -i 's/^int main/int ffmpeg_exec/' fftools/ffmpeg.c && sed -i '$a \\nint c_ffmpeg_exec(char \*str)\n\{\n    char \*tmp = strtok(str, " ");\n    int i = 0;\n    char \*argv[] = \{0\};\n    argv[i] = tmp;\n    while (tmp != NULL) {\n        i++;\n        tmp = strtok(NULL, " ");\n        argv[i] = tmp;\n    }\n    return ffmpeg_exec(i, argv);\n\}' fftools/ffmpeg.c
sed -i '/#endif.*FFTOOLS_FFMPEG_H/i\int c_ffmpeg_exec(char \*str);\nint ffmpeg_exec(int argc, char \*\*argv);\n' fftools/ffmpeg.h
  1. linux x86_64 编译

进入ffmpeg根目录,执行下面语句

    ./configure --disable-doc --disable-manpages --disable-htmlpages --disable-podpages --disable-txtpages --disable-ffplay --disable-ffprobe --extra-cflags=-fPIC --disable-asm
    make
  1. Windows编译

进入ffmpeg根目录,执行下面语句

    ./configure  --disable-doc --disable-manpages --disable-htmlpages --disable-podpages --disable-txtpages --disable-ffplay --disable-ffprobe --extra-cflags=-fPIC --disable-asm --arch=x86_64 --target-os=mingw32
    make
  1. ohos编译

进入ffmpeg根目录,执行下面语句(其中/usr1/ohos/llvm/bin/是ohos编译器路径,/usr1/ohos/llvm/include/aarch64-linux-ohos是ohos的头文件,请自行设置)

    ./configure --target-os=linux --arch=aarch64 --enable-cross-compile --disable-doc --disable-manpages --disable-htmlpages --disable-podpages --disable-txtpages --disable-ffplay --disable-ffprobe --extra-cflags=-fPIC --disable-asm --extra-cflags="-I/usr1/ohos/llvm/include/aarch64-linux-ohos --target=aarch64-linux-ohos" --extra-ldflags="--target=aarch64-linux-ohos" --cc="/usr1/ohos/llvm/bin/clang" --ar="/usr1/ohos/llvm/bin/llvm-ar" --ranlib="/usr1/ohos/llvm/bin/llvm-ranlib" --strip="/usr1/ohos/llvm/bin/llvm-strip"
    make
mp4parser编译

Linux编译

将上面生成文件 libcrypto.so,放入根目录的 lib 文件夹下,之后执行

 git clone https://gitcode.com/Cangjie-TPC/mp4parser4cj.git  ---> 拉取代码
 cd mp4parser     ---> 进入到mp4parser4cj目录下
 cjpm build        ---> 编译

Windows编译

将上面生成文件 libcrypto.dll,放入根目录的 lib 文件夹下,之后执行

git clone https://gitcode.com/Cangjie-TPC/mp4parser4cj.git  ---> 拉取代码
cd mp4parser     ---> 进入到mp4parser4cj目录下
cjpm build        ---> 编译

功能示例

import std.io.*
import mp4parser.*
import std.os.posix.*
import std.fs.*
import std.sync.sleep
import std.time.Duration

main() {
    var path2: String = getcwd()
    var path1: String = getcwd()
    var b = MP4Parser()
    var str = b.audioMultMerge("${path1}/a2.txt","${path1}/aa.mp3")
    sleep(Duration.second * 5)
    let fs: File = File("${path2}/aa.mp3",Open(true, false))
    var readFile: Array<UInt8> = Array<UInt8>()
    if (fs.canRead()) {
    	readFile = fs.readToEnd()
    	fs.flush()
    	fs.close()
    }
    if (readFile.size != 1048576) {
        return 1
    }
    println("success")
    return 0
}

运行结果如下:

success

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:gitee.com/MNxiaona/733GH

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值