# avitomp4 **Repository Path**: xingsfdz/avitomp4 ## Basic Information - **Project Name**: avitomp4 - **Description**: avi转mp4 视频工具 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-08 - **Last Updated**: 2025-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频转换器 (Video Converter) 基于FFmpeg和JavaCV的AVI转MP4视频转换工具,支持高质量视频转换、帧提取和视频信息查看等功能。 ## 功能特性 - ✅ **AVI转MP4转换**: 使用H.264编码和AAC音频编码进行高质量转换 - ✅ **视频信息查看**: 获取视频的详细信息(分辨率、帧率、时长等) - ✅ **帧提取**: 从视频中提取指定帧并保存为PNG图片 - ✅ **视频验证**: 验证视频文件的有效性 - ✅ **批量处理**: 支持命令行和交互式两种使用模式 - ✅ **测试视频生成**: 创建用于测试的彩色渐变视频 ## 技术栈 - **Java 11+**: 核心开发语言 - **JavaCV 1.5.9**: FFmpeg的Java绑定库 - **FFmpeg 5.1.2**: 视频处理核心引擎 - **JUnit 5**: 单元测试框架 - **Maven**: 项目构建和依赖管理 - **SLF4J**: 日志框架 ## 快速开始 ### 环境要求 - Java 11 或更高版本 - Maven 3.6+ - 至少 2GB 可用内存(用于视频处理) ### 安装和构建 1. **克隆项目** ```bash git clone cd video-converter ``` 2. **编译项目** ```bash mvn clean compile ``` 3. **运行测试** ```bash mvn test ``` 4. **打包项目** ```bash mvn package ``` ### 使用方法 #### 1. 命令行模式 ```bash # 基本转换 java -cp target/classes com.example.videoconverter.VideoConverterDemo input.avi output.mp4 # 指定帧率转换 java -cp target/classes com.example.videoconverter.VideoConverterDemo input.avi output.mp4 30 ``` #### 2. 交互式模式 ```bash java -cp target/classes com.example.videoconverter.VideoConverterDemo ``` 交互式模式提供以下功能菜单: - AVI转MP4转换 - 查看视频信息 - 提取视频帧 - 创建测试视频 - 验证视频文件 #### 3. 编程接口 ```java import com.example.videoconverter.VideoConverter; import com.example.videoconverter.VideoUtils; // 创建转换器实例 VideoConverter converter = new VideoConverter(); // 转换视频 converter.convertAviToMp4("input.avi", "output.mp4", 25.0); // 获取视频信息 VideoConverter.VideoInfo info = converter.getVideoInfo("video.mp4"); System.out.println(info.toString()); // 提取视频帧 List frameNumbers = Arrays.asList(0, 10, 20, 30); VideoUtils.extractFrames("video.mp4", "frames/", frameNumbers); // 验证视频文件 boolean isValid = VideoUtils.isValidVideo("video.mp4"); ``` ## 项目结构 ``` video-converter/ ├── pom.xml # Maven配置文件 ├── README.md # 项目说明文档 ├── src/ │ ├── main/ │ │ ├── java/com/example/videoconverter/ │ │ │ ├── VideoConverter.java # 核心转换类 │ │ │ ├── VideoUtils.java # 视频工具类 │ │ │ └── VideoConverterDemo.java # 演示程序 │ │ └── resources/ # 资源文件 │ └── test/ │ ├── java/com/example/videoconverter/ │ │ ├── VideoConverterTest.java # 转换器测试 │ │ └── VideoUtilsTest.java # 工具类测试 │ └── resources/ # 测试资源 └── target/ # 编译输出目录 ``` ## 核心类说明 ### VideoConverter 主要的视频转换类,提供以下功能: - `convertAviToMp4(String inputPath, String outputPath, double frameRate)`: AVI转MP4转换 - `convertAviToMp4(String inputPath, String outputPath)`: 使用默认帧率转换 - `getVideoInfo(String videoPath)`: 获取视频信息 ### VideoUtils 视频处理工具类,提供以下功能: - `extractFrames()`: 提取指定帧 - `extractFramesEvenly()`: 均匀提取帧 - `createVideoFromImages()`: 从图片序列创建视频 - `isValidVideo()`: 验证视频文件 - `getSupportedVideoFormats()`: 获取支持的格式列表 ### VideoConverterDemo 演示程序,支持命令行和交互式两种模式。 ## 配置参数 ### 视频编码参数 - **视频编码器**: H.264 (AV_CODEC_ID_H264) - **音频编码器**: AAC (AV_CODEC_ID_AAC) - **视频质量**: CRF 23 (高质量) - **比特率**: 2 Mbps - **默认帧率**: 25 fps ### 性能优化建议 1. **内存设置**: 对于大视频文件,建议增加JVM内存 ```bash java -Xmx4g -cp target/classes com.example.videoconverter.VideoConverterDemo ``` 2. **并发处理**: 避免同时处理多个大视频文件 3. **临时目录**: 确保有足够的磁盘空间用于临时文件 ## 测试 项目包含完整的单元测试,覆盖主要功能: ```bash # 运行所有测试 mvn test # 运行特定测试类 mvn test -Dtest=VideoConverterTest # 运行测试并生成报告 mvn test jacoco:report ``` ### 测试覆盖范围 - ✅ 视频转换功能测试 - ✅ 视频信息获取测试 - ✅ 帧提取功能测试 - ✅ 视频验证测试 - ✅ 异常处理测试 - ✅ 边界条件测试 ## 支持的格式 ### 输入格式 - AVI - MP4 - MOV - MKV - FLV - WMV - WebM ### 输出格式 - MP4 (主要支持) - AVI - MOV ## 常见问题 ### Q: 转换过程中出现内存不足错误? A: 增加JVM内存设置:`java -Xmx4g ...` ### Q: 转换速度很慢? A: 这是正常现象,视频转换是CPU密集型操作。可以考虑: - 降低输出质量设置 - 使用更快的存储设备 - 确保有足够的系统资源 ### Q: 某些AVI文件无法转换? A: 可能的原因: - 文件损坏或格式不标准 - 使用了不支持的编码格式 - 文件权限问题 ### Q: 如何批量转换多个文件? A: 可以编写脚本调用命令行接口,或者扩展VideoConverterDemo类。 ## 许可证 本项目采用 MIT 许可证。详见 LICENSE 文件。 ## 贡献 欢迎提交 Issue 和 Pull Request! 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 更新日志 ### v1.0.0 (2024-01-XX) - ✅ 初始版本发布 - ✅ 支持AVI转MP4转换 - ✅ 视频信息查看功能 - ✅ 帧提取功能 - ✅ 完整的单元测试覆盖 - ✅ 命令行和交互式界面 ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交 GitHub Issue - 发送邮件至:[your-email@example.com] --- **注意**: 本工具依赖FFmpeg库,首次运行时会自动下载相关的本地库文件,请确保网络连接正常。