android WebRtc无法推流以及WebRtc 拉流无声音问题

最近在开发使用WebRtc进行视频通话和语音通话,我使用的设备是MTK的手机,期间后台的技术人员几乎没法提供任何帮助,只有接口和测试的web端,有遇到不能推流。推流成功网页端有画面有声音,但是安卓端有画面,没有声音的情况

问题一:无法推流

一开始遇到问题是在进行推流前进行sdp的交换,一直返回返回code:400的情况,我们知道在 onCreateSuccess 方法回调中拿到offerSdp,用于向SRS服务进行网络请求,这时候一定注意其间的网络请求地址,token的拼接,peerConnection.addTransceiver添加的视频轨道和音频轨道一定要按照实际需求来,没有的就不要全部添加;全部中间步骤没错,这时候还是返回code:400的问题,后来在后台看到的错误日志是create session : create session : add publisher : publish negotiate : no found valid H.264 payload type,然后就是网上搜索下同样的问题,这里感谢

冬季穿短裤同学的知识帮助,就是接口请求里offer sdpm=videoH.264相关信息,即WebRTC在createOffer时,返回的sdp没有H.264相关信息;Android的使用WebRTC仅支持硬件上 H.264 解码和编码,并且仅支持部分芯片组。因此,如果设备不支持硬件 H.264 或具有不受支持的芯片组,您将只能使用 VP8、VP9。支持的芯片组仅有OMX.qcom.*OMX.Exynos.*,不支持的要自行添加。

解决方法:

VideoEncoderFactory创建

在创建PeerConnectionFactory,可以设VideoEncoderFactory

val encoderFactory = DefaultVideoEncoderFactory(eglBaseContext, true, true)
val peerConnectionFactory = PeerConnectionFactory.builder()
            .setVideoEncoderFactory(encoderFactory)
            .createPeerConnectionFactory()
public class DefaultVideoEncoderFactory implements VideoEncoderFactory {
	/**
     * 硬解件编码工厂
     */
    private final Vid
### 使用 Golang 实现 WebRTC 为了实现使用 Golang 进行 WebRTC 的功能,可以借助 Pion WebRTC 库。此库提供了完整的 WebRTC 协议栈支持,并且易于集成到 Go 项目中。 #### 下载并设置 Pion WebRTC 示例环境 首先需要获取 Pion WebRTC 的源代码仓库: ```bash git clone https://github.com/pion/webrtc.git cd webrtc/examples ``` 上述命令会克隆整个 pion/webrtc 仓库并将工作目录切换至 `examples` 文件夹内[^1]。 #### 创建一个新的 WebRTC 客户端应用 创建一个名为 `main.go` 的文件,在其中编写如下基础结构来初始化 WebRTC 对象以及配置信令服务器连接逻辑: ```go package main import ( "log" "os" "github.com/pion/webrtc/v3" ) func main() { // 设置日志级别为Debug模式以便于排查问题 log.SetLevel(log.DebugLevel) // 初始化WebRTC PeerConnection Configuration config := webrtc.Configuration{ ICEServers: []webrtc.ICEserver{{ URLs: []string{"stun:stun.l.google.com:19302"}, }}, } peerConnection, err := webrtc.NewPeerConnection(config) if err != nil { log.Fatal(err) } defer peerConnection.Close() // 添加本地音视频轨道 (此处省略具体实现细节) // 处理来自远端的数据通道消息 // 建立信令通信机制以交换SDP offer/answer ICE candidates select {} } ``` 这段代码展示了如何建立最基本的 WebRTC 配置项,包括指定 STUN 服务地址用于 NAT 穿透;同时通过调用 NewPeerConnection 方法实例化了一个新的 Peer Connection 对象。 对于实际应用场景中的媒体处理部分,则可能涉及到更多复杂的操作比如采集摄像头画面作为输入源、编码压缩后再发送给对方节点等过程。这部分功能通常依赖第三方工具链完成,例如 FFmpeg 或者 GStreamer 结合 OpenCV 来捕获屏幕区域内的视觉信息并将其转换成适合网络传输的形式[^2]。 当考虑移动端开发时,还可以参考 SRS(Simple RTMP Server)框架下的 Android SDK 支持情况来进行适配优化,确保能够在不同平台间稳定可靠地传递实时多媒体内容[^3]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YBZha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值