安卓手机摄像头直接推流至RTMP Nginx服务器方案咨询
安卓摄像头直接推流到Nginx RTMP服务器方案
优先方案:Ionic-React + Capacitor
可以借助Capacitor社区的RTMP推流插件实现,核心是将密钥嵌入推流URL路径中:
步骤1:安装适配插件
选择支持RTMP推流的Capacitor插件,执行安装命令:
npm install @capacitor-community/rtmp-streaming npx cap sync
步骤2:实现推流逻辑
在React组件中调用插件API,把密钥作为推流URL的一部分传入(your-secret-stream-key就是你需要添加的密钥):
import { RtmpStreaming } from '@capacitor-community/rtmp-streaming'; // 启动摄像头推流 const startCameraStream = async () => { try { await RtmpStreaming.start({ url: 'rtmp://your-nginx-server-ip/live/your-secret-stream-key', camera: 'back', // 可选'front'切换前置摄像头 videoBitrate: 1000000, // 1Mbps,可根据网络状况调整 fps: 30, audioBitrate: 128000 }); console.log('推流已启动'); } catch (err) { console.error('推流启动失败:', err); } }; // 停止推流 const stopCameraStream = async () => { await RtmpStreaming.stop(); console.log('推流已停止'); };
原生Java方案(基于rtmp-rtsp-stream-client-java库)
该库无需单独设置密钥参数,直接将密钥整合到推流URL的路径部分即可,具体实现如下:
核心代码示例
import com.pedro.rtplibrary.rtmp.RtmpCameraClient; import com.pedro.rtplibrary.util.CameraHelper; import com.pedro.encoder.input.video.CameraOpenException; private RtmpCameraClient rtmpClient; // 初始化RTMP推流客户端 private void initRtmpStream() { rtmpClient = new RtmpCameraClient.Builder() .setContext(this) // 密钥嵌入URL的路径段 .setUrl("rtmp://your-nginx-server-ip/live/your-secret-stream-key") .setCamera(CameraHelper.CAMERA_BACK) // 切换前置摄像头用CAMERA_FRONT .setVideoResolution(com.pedro.encoder.input.video.VideoConfig.Resolution.Resolution720p) .setVideoBitrate(1000 * 1024) .setFps(30) .build(); } // 启动推流 public void startStreaming() { try { if (!rtmpClient.isStreaming()) { rtmpClient.startStream(); } } catch (CameraOpenException e) { e.printStackTrace(); } } // 停止推流 public void stopStreaming() { if (rtmpClient.isStreaming()) { rtmpClient.stopStream(); } }
注意事项
- 确保你的Nginx RTMP服务器配置中,对应的应用(比如示例中的
live)已开启live on;配置,才能正常接收推流请求。 - 这里的密钥逻辑和OBS推流一致,本质是通过URL路径区分不同的推流流。
内容的提问来源于stack exchange,提问作者Wayne Tun
相关产品推荐
相关产品推荐

