# 多进程方案使用说明 ## 概述 本方案通过多进程实现两个USB摄像头同时工作。每个摄像头运行在独立的进程中,每个进程拥有独立的H264Encoder实例,从而避免了底层C库的单实例限制。 ## 架构说明 - **H264EncodeService**:主进程服务,处理第一个摄像头(cameraId=1) - **H264EncodeService2**:独立进程服务(`:camera2`),处理第二个摄像头(cameraId=2) ## 使用方法 ### 启动第一个摄像头(cameraId=1) ```json { "width": 640, "height": 480, "framerate": 25, "cameraId": 1 } ``` 或者不指定cameraId(默认为1): ```json { "width": 640, "height": 480, "framerate": 25 } ``` ### 启动第二个摄像头(cameraId=2) ```json { "width": 640, "height": 480, "framerate": 25, "cameraId": 2 } ``` ### 网络推送示例 **第一个摄像头:** ```json { "ip": "192.168.1.100", "port": 8888, "width": 640, "height": 480, "framerate": 25, "simPhone": "013120122580", "cameraId": 1 } ``` **第二个摄像头:** ```json { "ip": "192.168.1.100", "port": 8889, "width": 640, "height": 480, "framerate": 25, "simPhone": "013120122580", "cameraId": 2 } ``` ### 停止指定摄像头 停止第一个摄像头: ```json { "cameraId": 1 } ``` 停止第二个摄像头: ```json { "cameraId": 2 } ``` 如果不指定cameraId,默认停止第一个摄像头。 ## 关键特性 1. **进程隔离**:两个摄像头运行在完全独立的进程中,互不干扰 2. **自动路由**:主服务根据cameraId自动路由到对应的进程 3. **独立配置**:每个摄像头可以独立配置分辨率、帧率、网络参数等 4. **独立文件**:第二个摄像头的文件会添加`camera2`标识,便于区分 5. **独立通道**:第二个摄像头使用`logicalChannelId=2`,第一个使用`logicalChannelId=1` ## 文件命名 - 第一个摄像头:`h264_1234567890123.h264` - 第二个摄像头:`h264_camera2_1234567890123.h264` ## 注意事项 1. 确保两个USB摄像头都已正确连接 2. 第二个摄像头固定使用cameraId=2,第一个摄像头使用cameraId=1(或不指定) 3. 两个进程可以同时运行,互不影响 4. 每个进程都有独立的H264Encoder实例,因此可以真正并发工作 ## 技术实现 - 主服务通过AIDL绑定到第二个进程的服务 - 第二个进程通过`android:process=":camera2"`配置在独立进程中运行 - 所有操作都通过AIDL接口进行进程间通信