需求讨论
<h2>暂时需要的功能(接口)</h2>
<ol>
<li>
<p>前台 oss 的 sts 授权 (前端小程序原生请求上传)</p>
</li>
<li>
<p>后台 oss 的 sts 授权 (前端使用sdk上传)</p>
</li>
<li>
<p>前台 云点播 的 sts 授权 (前端小程序原生请求上传)</p>
</li>
<li>
<p>后台 云点播 的 sts 授权 (前端使用sdk上传)</p>
</li>
<li>
<p>水印的创建</p>
</li>
<li>
<p>视频的直传</p>
</li>
<li>
<p>通过 url 上传视频到云点播</p>
</li>
<li>
<p>视频拼接 和 打水印 </p>
</li>
<li>
<p>获取视频详细信息</p>
</li>
<li>go 语言上传视频 (获取授权??)</li>
</ol>
<ul>
<li>需要讨论的问题</li>
</ul>
<pre><code>go 这边的上传问题
水印的创建问题(获取水印凭证,上传水印,创建转码模板绑定水印三步)
后缀视频的上传问题 (直传的话,要先上传到 aliserver, aliserver 再直传到阿里?)
可能还有哪些?</code></pre>
<p><br></p>
<h2>请求方式</h2>
<p>guzzle 封装一层 ,写成一个客户端</p>
<p><br></p>
<h2>不同情况讨论</h2>
<p><br></p>
<h4>情况1 : 同步请求的情况(比如获取 sts 授权、比如创建一个水印)</h4>
<ol>
<li>
<p>新建客户端,指定项目名</p>
</li>
<li>
<p>客户端请求 aliserver</p>
</li>
<li>
<p>aliserver 记录请求信息,并请求阿里</p>
</li>
<li>阿里返回信息,aliserver 返回给客户端</li>
</ol>
<ul>
<li>需要讨论的问题</li>
</ul>
<pre><code>记录哪些信息?(记录调用过程,视频信息这些)
一个表记录,还是分多个表?
js 上传后用什么方式去获取宽高封面图?
</code></pre>
<p><br></p>
<h4>情况2 :异步有回调的情况 (比如需要通过 url 上传视频到云点播)</h4>
<ol>
<li>
<p>新建客户端,指定项目名</p>
</li>
<li>
<p>调用具体的办法,可以自定义参数,自定义回调</p>
</li>
<li>
<p>客户端请求 aliserver</p>
</li>
<li>
<p>aliserver 生成一个唯一标识,和上面的信息一起记录 (注册到回调表)</p>
</li>
<li>
<p>将唯一标识放在 user_data 里面,然后请求阿里,同时 aliserver 会同步返回唯一标识给客户端</p>
</li>
<li>阿里那边处理完成后,发送回调给 aliserver,aliserver 从回调中取出唯一标识,查出(客户端的回调,客户端的自定义信息),将这些回调到客户端</li>
</ol>
<ul>
<li>需要讨论的问题</li>
</ul>
<pre><code>阿里那边可能会产生多个回调,比如上传成功+解析完成+截图完成,都回调给客户端,还是三个全部接受到再回调?
唯一标识的定义,因为阿里的 user_data 有长度限制,长度越少越好,后面才能放其他东西</code></pre>
<p><br></p>
<h4>情况3 : 异步,并且 aliserver 这边是多事件的情况 (比如打水印 + 拼接视频 + 再次上传 + 视频多清晰度(m3u8))</h4>
<ol>
<li>
<p>新建客户,指定项目名</p>
</li>
<li>
<p>调用具体的办法,可以自定义参数,自定义回调</p>
</li>
<li>
<p>客户端请求 aliserver</p>
</li>
<li>
<p>aliserver 生成一个唯一标识,和上面的信息一起记录 (注册到回调表)</p>
</li>
<li>
<p>aliserver 以这个唯一标识 为 key,建立一个队列,队列里是事件的执行的顺序</p>
</li>
<li>
<p>将唯一标识放在 user_data 里面,然后请求阿里,同时 aliserver 同步返回唯一标识给客户端</p>
</li>
<li>
<p>每完成一个事件,接受到回调,拿出唯一标识,到队列里删除该事件,调用阿里那边继续下一个事件</p>
</li>
<li>最后一次回调,发现队列为空,从回调中取出唯一标识,查出(客户端的回调,客户端的自定义信息),将这些回调到客户端</li>
</ol>
<ul>
<li>需要讨论的问题</li>
</ul>
<pre><code>为了方便追溯和定位问题,每一步都要记录一些信息?主要记录哪些信息?</code></pre>