//编译前要安装好Cmake3.5以上版本 cd mpp-develop/build/android/aarch64 //进入此路径 chmod +x make-Android.bash //给执行权限 ./make-Android.bash --ndk /home/×××/android-ndk-r21e //指定解压后的NDK路径 编译 //编译后会在test目录产生可执行文件和mpp目录下的libmpp.so ls test/ CMakeFiles cmake_install.cmake main_test Makefile mpi_dec_mt_test mpi_dec_multi_test mpi_dec_test mpi_enc_mt_test mpi_enc_test mpi_rc2_test mpp_info_test vpu_api_test //推libmpp.so到板子对应路径 adb push mpp/libmpp.so /sys/lib64/ (我忘记是sys 还是 system了,自己查) adb push mpp/libmpp.so /sys/lib/ (我忘记是sys 还是 system了,自己查) adb push test/mpi_dec_test /data/local/tmp //然后推送可执行的编解码配置文件 adb shell //进入板子 cd /data/local/tmp chmod 777 mpi_dec_test 给权限 su //切换到su 不然运行时 打不开/dev/video0 ./mpi_dec_test -t 7 -i /dev/video0 -w 1920 -h 1080 -o cam.h264 //执行会在当前得到h264数据流文件 这个文章里adb push test/mpi_dec_test /data/local/tmp //然后推送可执行的编解码配置文件。这一句的可执行的编解码配置文件从哪里来
时间: 2025-06-23 21:20:26 浏览: 22
<think>好的,用户现在的问题是询问在之前的编译过程中提到的“可执行的编解码配置文件”是从哪里来的。用户提供的编译脚本执行后,在test目录下生成了一些可执行文件,比如mpi_dec_test,但用户可能对这些文件的来源不太清楚,或者需要确认这些文件是否就是所谓的“编解码配置文件”。
首先,我需要回顾用户提供的编译步骤。用户进入mpp-develop/build/android/aarch64目录,运行make-Android.bash脚本,并指定了NDK路径。编译完成后,在test目录下生成了多个可执行文件,如mpi_dec_test、mpi_enc_test等。用户随后将这些可执行文件通过adb推送到设备的/data/local/tmp目录下执行,但可能对“编解码配置文件”这个术语感到困惑,或者不确定这些可执行文件是否就是所需的配置文件。
接下来,我需要解析用户的问题核心。用户提到的“可执行的编解码配置文件”可能是指用于配置编解码参数的文件,或者可能误解了可执行文件本身的作用。但根据上下文,用户将mpi_dec_test推送到设备并执行,生成h264流文件,因此这里的“编解码配置文件”实际上应该指的是这些可执行测试程序,比如mpi_dec_test,它们可能内置了测试用例或通过命令行参数指定输入输出配置,而非单独的配置文件。
需要确认的是,这些测试程序(如mpi_dec_test)是否在编译时自动生成,或者是否需要额外的配置步骤。根据用户提供的编译输出,test目录下的文件包括可执行文件,如mpi_dec_test,因此这些应该是编译过程中由源代码生成的测试程序,用于执行编解码任务。用户可能误将可执行文件称为配置文件,但实际上它们是需要运行的测试工具。
此外,用户可能在之前的步骤中遇到问题,比如找不到配置文件,或者不确定如何正确配置这些测试程序。需要解释这些测试程序的来源,以及它们是否需要额外的配置文件,或者是否所有配置都通过命令行参数完成。
还需注意用户提到的路径问题,比如libmpp.so应该推送到/system/lib64/还是其他目录,这可能涉及设备的具体文件系统结构,需要用户根据设备情况调整。但用户当前的主要问题集中在“编解码配置文件”的来源,因此需要重点解答这一点。
总结:用户的疑问在于“可执行的编解码配置文件”的来源,根据上下文,这指的是编译生成的测试程序(如mpi_dec_test),这些程序通过命令行参数指定输入输出,无需额外配置文件。需要明确告知用户这些文件是编译时自动生成的,并指导其正确使用命令行参数进行编解码操作。</think>### 一、问题核心
你提到的 **"可执行的编解码配置文件"** 实际上是 **编译生成的测试程序**(如 `mpi_dec_test`),而非独立配置文件。这些二进制程序通过 **命令行参数** 控制编解码行为。
---
### 二、关键文件来源解析
#### **1. 测试程序生成路径**
```bash
# 编译完成后在 test/ 目录下生成的可执行文件
├── test/
├── mpi_dec_test # 解码测试程序 ✅
├── mpi_enc_test # 编码测试程序
├── mpp_info_test # 硬件信息检测工具
└── vpu_api_test # VPU接口测试
```
#### **2. 生成原理**
- **源码位置**:在 MPP 框架源码的 `test/` 目录中存放测试用例源码
- **编译规则**:`CMakeLists.txt` 中定义了如何编译这些测试程序
```cmake
# 示例编译规则 (简化为伪代码)
add_executable(mpi_dec_test
test/mpi/dec/dec_test.c
test/mpi/dec/dec_utils.c)
target_link_libraries(mpi_dec_test mpp)
```
---
### 三、操作流程修正
#### **1. 完整编译-部署流程**
```bash
# 编译阶段
cd mpp-develop/build/android/aarch64
./make-Android.bash --ndk /home/xxx/android-ndk-r21e
# 部署阶段
adb push test/mpi_dec_test /data/local/tmp/ # 推送测试程序 ✅
adb push mpp/libmpp.so /system/lib64/ # 正确路径需要根据设备验证
# 执行阶段
adb shell
cd /data/local/tmp
chmod 777 mpi_dec_test
./mpi_dec_test -t 7 -i /dev/video0 -o cam.h264 # 参数化运行
```
#### **2. 参数配置原理**
程序通过 **命令行参数** 实现配置,无需独立文件:
| 参数 | 作用 | 示例值 |
|------|------|--------|
| `-t` | 指定编解码类型 | `7` 对应H.264 |
| `-i` | 输入源 | `/dev/video0` (摄像头设备节点) |
| `-o` | 输出文件 | `cam.h264` (原始码流文件) |
| `-w/-h` | 分辨率 | `1920x1080` |
---
### 四、关于配置文件的常见误解
#### **可能存在的混淆点**
| 用户预期 | 实际实现方式 | 验证方法 |
|---------|--------------|----------|
| 独立配置文件 (如.conf) | 硬编码参数 + 命令行参数 | 查看源码中的 `parse_args()` 函数 |
| 动态加载配置 | 编译时参数宏定义 | 检查 `CMakeLists.txt` 中的 `add_definitions()` |
---
### 五、高级调试技巧
#### **1. 查看支持的参数列表**
```bash
adb shell /data/local/tmp/mpi_dec_test --help
```
#### **2. 获取硬件能力信息**
```bash
adb shell /data/local/tmp/mpp_info_test
```
输出示例:
```
H264 decoder: support 1080p@30fps
H265 encoder: not supported
VPU type: rk3588
```
#### **3. 多线程编解码测试**
```bash
# 使用 -n 参数指定线程数
./mpi_dec_mt_test -t 7 -i input.h264 -o output.yuv -n 4
```
---
### 六、路径验证方法
#### **1. 库文件路径确认**
```bash
adb shell ls -l /system/lib64/libmpp.so # 优先尝试此路径
adb shell ls -l /vendor/lib64/libmpp.so # 部分设备可能在此
```
#### **2. 环境变量检查**
```bash
adb shell "echo $LD_LIBRARY_PATH"
# 正常应包含 /system/lib64 或 /vendor/lib64
```
---
### 七、编译参数扩展建议
若需深度定制功能,可在编译时修改 `CMake` 参数:
```bash
# 在 make-Android.bash 执行前修改 CMake 配置
# 启用高级调试功能
cmake -DHAVE_DEBUG_LOG=ON ..
# 禁用不需要的组件
cmake -DMPP_ENC_TEST=OFF ..
```
---
### 八、关键源码定位
| 功能模块 | 源码路径 | 关键文件 |
|---------|----------|----------|
| 解码测试 | `test/mpi/dec/` | `dec_test.c`, `dec_utils.c` |
| 编码测试 | `test/mpi/enc/` | `enc_test.c`, `enc_utils.c` |
| 参数解析 | `test/common/` | `mpp_parse.c` |
---
通过上述流程,`mpi_dec_test` 等可执行程序将直接通过命令行参数完成编解码配置,无需额外配置文件。这是嵌入式媒体处理框架的典型设计模式。
阅读全文
相关推荐





