# H264文件检查工具使用说明 ## 快速检查 ### 方法1: 直接从设备路径检查(如果文件在本地) ```bash python check_h264.py test.h264 ``` ### 方法2: 从Android设备下载文件后检查 1. **连接Android设备并启用USB调试** 2. **查找文件路径** Android设备上的文件路径通常是: ``` /storage/emulated/0/Android/data/com.anyun.h264/files/test.h264 ``` 或者使用adb查找: ```bash adb shell "find /sdcard -name test.h264 2>/dev/null" ``` 3. **下载文件到本地** ```bash adb pull /storage/emulated/0/Android/data/com.anyun.h264/files/test.h264 ./test.h264 ``` 4. **运行检查工具** ```bash python check_h264.py test.h264 ``` ## 检查内容 工具会检查以下内容: 1. ✅ **文件是否存在** 2. ✅ **文件大小**(应该大于100字节) 3. ✅ **NALU单元数量**(至少应该有SPS/PPS + 1个关键帧) 4. ✅ **是否包含SPS**(序列参数集,必需) 5. ✅ **是否包含PPS**(图像参数集,必需) 6. ✅ **是否包含IDR关键帧**(必需) 7. ✅ **是否有多个帧** ## 预期结果 一个可以播放的H264文件应该包含: - ✅ 至少1个SPS (类型7) - ✅ 至少1个PPS (类型8) - ✅ 至少1个IDR关键帧 (类型5) - ✅ 多个NALU单元(建议>10个) ## 常见问题 ### Q: 文件只有1帧怎么办? **A:** 这是之前的问题。现在的代码已经修复: - ✅ 正确处理SPS/PPS配置 - ✅ 在关键帧时合并SPS/PPS - ✅ 改进编码循环,确保处理所有输出 - ✅ 添加清空编码器功能 **建议:** 1. 重新编译并运行应用 2. 录制至少3-5秒视频 3. 停止编码后检查文件 ### Q: 文件无法播放怎么办? **可能原因:** 1. ❌ 缺少SPS/PPS - 检查是否输出了配置数据 2. ❌ 文件格式错误 - 检查是否是Annex-B格式 3. ❌ 只有1帧 - 检查编码循环是否正常工作 **解决方案:** 1. 查看Logcat日志,搜索 "H264Encoder" 2. 检查是否有 "SPS/PPS included" 日志 3. 检查是否有 "Frame encoded" 日志 4. 使用此工具检查文件结构 ### Q: 如何播放H264文件? 可以使用以下播放器: - **VLC Media Player**(推荐) - **ffplay** (FFmpeg自带) - **MPC-HC** - **PotPlayer** 直接双击 `.h264` 文件或拖放到播放器窗口即可。 ## 调试建议 如果文件无法播放,请检查: 1. **查看Logcat日志** ```bash adb logcat -s H264Encoder:D MainActivity:D ``` 2. **检查关键日志** - "SPS/PPS included in key frame data" - 说明SPS/PPS已合并 - "Frame encoded: ..." - 说明有帧输出 - "Encoder output EOS" - 说明正常结束 3. **验证文件结构** ```bash python check_h264.py test.h264 ``` 4. **使用hexdump查看文件头** ```bash hexdump -C test.h264 | head -20 ``` 应该看到:`00 00 00 01` 或 `00 00 01`(Annex-B起始码)