Go版WebRTC解密base64执行结果程序终止原因分析


本文摘自网络,作者,侵删。

近期我们开始研究通过go来实现webrtc,在使用第三方API进行base64编码加密时,用的是base64.StdEncoding.DecodeString方法来进行解码和base64.StdEncoding.EncodeToString编码,但是最后执行结果会使程序终止。

解码如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

程序终止:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

Base64字符串如下:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

进行js通过调接口与go服务端通信,再进行js解码并无问题。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

这就说明应该是go端解码出现错误。通过查阅资料得知,base64.StdEncoding.DecodeString不适合直接使用的URL传输,因为URL编码会把标准的base64中的“/”和“+”字符变为如%xx的形式,而这些“%”号在储存时还需要进行转换,从而解码失败。

解决此问题,可以采用一种URL的改进base64编解码。

Base64解码代码:base64.RawURLEncoding.DecodeString Base64编码代码:base64.RawURLEncoding.EncodeToString

由于webrtc-client目前仍在测试,所以如果大家想了解一些关于我们现有视频平台的相关内容,也可以联系我们,经过实践测试,包括EasyCVR、EasyNVR、EasyGBS等在内的一些视频平台都提供了高稳定性和可靠性的视频传输直播分发服务。


本文来自:51CTO博客

感谢作者:wx6084d152d85c2

查看原文:Go版WebRTC解密base64执行结果程序终止原因分析

相关阅读 >>

Golang实现数组模拟环形队列

rune数据类型

Golang usr/local/Go/pkg/tool/linux_amd64/link: fingerprint mismatch 解决办法

Golang1.4bootstrap无法直接在aarch64编译

Go中控制并发的两种方式

在 bigcache 中存储任意类型(interface{})

手撸Golang Go与微服务 chatserver之3 压测与诊断

Go 每日一库之 termtables

聊聊dapr的consistent hash

Golang并发原语之-信号量semaphore

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...