【原】编译FFMPEG过程中发生的几个耗时解决的问题

其实只是几个我在编译过程中遇到的错误,记录下来也可以给大家做个小提示。

一、关于ERROR:* not found using pkg-config的问题。

遇到这类问题就先安装对应的软件呗,yum安装以及源码编译过程就不啰嗦了,官网、技术博客很多介绍;但有时候,明明已经安装好了(记得安装devel包,例如:# yum install opus-devel等等),但依旧无法被识别,此时请确定这个变量“PKG_CONFIG_PATH”是否被赋予了正确的值。

# echo $PKG_CONFIG_PATH

如果显示为空或者只显示了一个目录记录,那可能是这里出的问题。(因为:参照互联网上的编译安装步骤,你的那些依赖软件会分散在两个地方。所以,一般是两个不同的目录的话,才是正确的。)

(可选操作)此时请确定目录路径是否包含不同文件:”/root/ffmpeg_build/lib/pkgconfig“以及”/usr/local/lib/pkgconfig

然后执行命令:

# export PKG_CONFIG_PATH=/root/ffmpeg_build/lib/pkgconfig:/usr/local/lib/pkgconfig

即可。

二、个人一直使用的编译参数。

./configure –prefix=/root/ffmpeg_build –pkg-config-flags=–static –extra-cflags=-I/root/ffmpeg_build/include –extra-ldflags=-L/root/ffmpeg_build/lib –extra-libs=-lpthread –extra-libs=-lm –bindir=/root/bin –enable-gpl –enable-libfdk_aac –enable-libfreetype –enable-libmp3lame –enable-libopus –enable-libvorbis –enable-libvpx –enable-libx264 –enable-libx265 –enable-nonfree –enable-libass –pkg-config-flags=”–static”


参考链接:

  1. https://trac.ffmpeg.org/wiki/CompilationGuide/Centos

 

【原】开发微信小程序中获取unionId失败——附Golang与PHP示例

前言:话说这个在微信小程序获取union_id真是一个大坑,前来记录一下,避免更多人的入坑;同时提供一段可运行的Golang语言的解密代码(官方提供的代码只有C++、NodeJS、PHP、Python – -)。

前期准备:去腾讯开放平台(open.weixin.qq.com)把相关应用绑定在一起,同时需要进行微信认证(300人民币/年)。

坑一:

小程序开发文档误导,如下图:

通过这种途径是无法获取到unionid的。(我的环境是:一个网页应用,一个小程序,已认证通过,已绑定在同一个主体下。通过调试是无法获取unionid。)

坑二:

如图,通过wx.login是无法获取到union_id的。


那么“正确”的做法是什么呢?请按照如下操作:

1、当通过wx.login获取到code后,发送到后台服务器,此时后台服务器通过请求地址“https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code”得到openid以及session_key。

2、在小程序端调用如下接口:

wx.getUserInfo({
withCredentials: true,
success: function (res){
console.log(res)
}})
在变量res中,会包括“encryptedData”,“iv”变量的值(当然也会包括“userInfo”,“signature”等值,那些不在本文讨论范围之内)。
3、将“encryptedData”,“iv”的值发送到后台服务器,此时后台服务器相当于得到这个用户的“session_key”,“encryptedData”,“iv”这三个值(Base64 编码)。
4、进行对称解密,得到unionId等值。参照如图:

继续阅读【原】开发微信小程序中获取unionId失败——附Golang与PHP示例

【原】关于Go-Mirco如何使用Kafka作为消息队列

前言:其实一开始是打算用RabbitMQ的,不过出现点问题(随机性的),由于赶进度没有进一步搞,于是切换到Kafka。之前的那篇文章我隐藏了,有机会再看看。

本文重点不在Kafka等消息队列的对比与介绍,只关心于Go-Micro框架如何集成Kafka;阅读本文前,请确保您的Go-Micro框架可正常使用,其文档可参考:https://micro.mu/docs/install-guide.html


步骤:

一、引用包,你懂得。

以下以建立Service为例:(Function同理)

二、生产者

1.在main函数中:

注意:config.BrokerURLs 是[]string 类型的,存放Kafka的IP和端口,例如:

2.发布事件:

三、消费者:

与发布者相似,唯独是订阅事件,如下代码:

即可。