Androids下实现音视频录制
Androids下实现音视频录制根据当前已知需求,主要为音视频录制,其中在线视频录制功能是需用到第三方视频录制SDK进行完成。通过sdk可以实现在线视频录制并上传。主要有三种sdk,阿里,网易,七牛云录制方案。
1. 七牛云七牛视频解决方案主要基于快速上传、转码、鉴黄、存储、分发等强大云端能力,集成拍摄、美颜、特效、滤镜、编辑、合成、本地压缩、上传、播放等客户端组件的一站式短视频解决方案。
产品架构
主要模块短视频 SDK 负责采集数据、媒体内容的处理、媒体文件的剪辑拼接以及上传到云端。播放器 SDK 负责拉取并播放视频文件。业务服务器 客户集成七牛云的储存服务端 SDK 后,具备创建和获取上传地址和播放地址的能力。CDN 分发网络 负责流媒体的分发和查询。数据处理服务 支持鉴黄、转码、服务端水印、落存储。七牛短视频 SDK
产品架构图
七牛SDK 主要特点:1.组件化设计,方便客户像乐高积木一样组织自己的短视频 SDK,比 如加入研的美颜滤镜技术。
2.在数据流动的 pipeline 里面,每个节点支持丰富的数据和状态回调。用户可以根据这些回调结合自己的业务做出更好玩的产品。
2. ...
比特币知识清单
BTC知识清单1. 比特币是什么?
a.p2p分布式网络
b.去中心化的货币发行
c.公共交易账本
d.去中心化的交易验证
2. 比特币交易流程(UTXO交易实现)。交易输入输出
3. 比特币共识算法: POW (工作量证明)工作量证明机制是用于获取区块中交易打包的交易费和奖励。工作量证明三要素: 哈希函数(SHA256)、区块(区块头和交易列表)、难度系数。工作量证明的完成就是矿工计算出来的区块哈希必须小于目标哈希值。工作量证明的过程就是通过不停变换区块头(变换nouce随机数)作为输入进行SHA256哈希运算,找到一个特定格式哈希值的过程(有一定数量的前导0,数量0越多,代表难度值越大)。
###比特币标准交易类型
P2PKH(Pay to Public Key Hash)P2PK (Pay to Public Key)P2SH (Pay to Script Hash)多重签名数据输出(OP_RETURN 操作符)签名类型(SigHash Type)Sequence number & locktime交易延展性(Transaction Mall ...
比特币简单介绍
比特币简单介绍1. 比特币是什么
a.一个去中心化p2p分布式网络(比特币协议)
b.一个去中心化的数学的和确定性的货币发行(分布式挖矿)
c.一个公共的交易账簿(区块链)
d. 一个去中心化的交易验证系统(交易脚本)
2. 简述比特币完整交易流程?交易的基本单位是什么?比特币交易的基本单位是未经使用的一个交易输出,简称UTXO。
1.创建交易
用户在发起交易支付比特币时,比特币所有者需要在交易中提交其公钥和签名。比特币网络中的所有人可以通过所提交的公钥和签名进行验证,并确认该交易是否有效,即确认支付者在该时刻对所交易的比特币拥有所有权。如果交易校验有效,当前的比特币交易会接入比特币网络,从而使之能被传送。
2.交易广播
比特币交易是经过签名且不含任何机密信息、私钥或密码,因此可在任意网络环境下被发送。只要这笔交易可以到达能将它广播到比特币网络的比特币节点,这笔交易是如何被传输至第一个节点的并不重要。
3.交易验证
一旦一笔比特币交易被发送到任意一个连接至比特币网络的节点,这笔交易将会被该节点验证。如果交易被验证有效,该节点将会 ...
精通比特币-Wallets
Wallets/钱包Wallet Program/钱包项目Receiving and spending of satoshis(聪).
One program distributing public keys in order to receive satoshis.
Another program signing transactions spending those satoshis.
Wallet programs need to interact with the P2P network to get the block chain and to broadcast new transactions.
However, the progreams which distribute public keys or sign transactions do not need to interact with the P2P network.
A Wallet System:
A public key distribution program,
A Signing program,
A ...
比特币源码解析-整体框架
整体框架准备知识:
比特币常用库 Boost,openssl,libevent
主要数据结构:
交易(CTransaction),
区块(CBlock),
交易池(CTxMemPool)等,
共识(Consensus),
脚本(CScript)等数据结构。
可执行程序代码分析:
bench_bitcoin,
bitcoin-cli,
bitcoind,
bitcoin-qt,
bitcoin-tx,
test_bitcoin,
test_bitcoin_qt
比特币源码解析-准备知识-Boost
简介Boost是一个开源、跨平台、功能强大的c++库,并且是除了stl外最常用的库,实现了很多基本操作,使开发变得简单、快捷。
01 Signals2Signals2是基于Boost的另一个库Signals,实现线程安全的观察者模式。
通俗来讲,信号就是一个触发器,插槽就是一些列的回调函数,当信号发射时,也就是触发器被触发的时候,所有回调函数都将被调用。信号/插槽机制功能就是把这些功能相关的函数汇集到一起,在某一时刻,按顺序依次调用。
02 Bindbind并不是一个单独的类或函数,而是非常庞大的家族,依据绑定的参数个数和要绑定的调用对象类型,总共有数十个不同的形式,但它们的名字都叫做bind,编译器会根据具体的绑定代码自动确定要使用的正确形式。
bind接受的第一个参数必须是一个科调用对象f,包括函数指针、函数引用、成员函数指针和函数对象,之后bind接受最多九个参数,参数的数量必须与f的参数数量相等,这些参数将被传递给f作为形参。
绑定完成后,bind会返回一个函数对象,它内部保存了f的拷贝,具有operator(),返回值类型被自动推导为f的返回值类型。在发生调用时,这个函数对象 ...
比特币源码解析-准备知识-Libevent & QT
01 libevent 简介libevent是一个轻量级的开源的高性能的事件触发的网络库;适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。
特点:
事件驱动,高性能;
轻量级,专注于网络(相对于ACE);
开放源码,代码相当精炼、易读;
跨平台,支持Windows、Linux、BSD和Mac OS;
支持多种I/O多路复用技术(epoll、poll、dev/poll、select和kqueue等),在不同的操作系统下,做了多路复用模型的抽象,可以选择使用不同的模型,通过事件函数提供服务;
支持I/O,定时器和信号等事件;
采用Reactor模式。
主要的功能:
libevent提供了事件通知,io缓存事件,定时器,超时,异步解析dns,事件驱动的http server以及一个rpc框架。
事件通知:当文件描述符可读可写时将执行回调函数。
Io缓存:缓存事件提供了输入输出缓存,能自动的读入和写入,用户不必直接操作io。
定时器:libevent提供了定时器的机制,能够在一定的时间间隔之后调用回调函数。
...
比特币源码解析-数据结构交易
简介交易(transaction)是比特币甚至所有区块链中最核心的数据结构之一,其他所有的模块都是为交易服务的,包括交易的产生、广播、共识、存储等等,都是首先从交易出发,然后逐步延伸到其他模块。
文件名 //transaction.h
1234class COutPointclass CTxInclass CTxOutclass CTransaction
01 COutPoint1234567891011121314151617181920212223242526272829303132333435363738394041424344/** * An outpoint - a combination of a transaction hash and an index n into its vout * COutPoint主要用在交易的输入CTxIn中,用来确定当前输出的来源, * 包括前一笔的交易hash,以及对应前一笔交易中的第几个输出的序列号。 */class COutPoint{public: uint256 hash;/ ...
比特币源码解析-数据结构-区块
简介区块是区块链的基本组成机构,也是交易信息的载体,矿工通过挖矿的形式来产生新的区块并获得奖励,新块产生的过程也是一个交易打包的过程,只有加入到区块中的交易才会被系统所有其他节点所认可,才是有效的。
文件名 //block.h
1class CBlockHeader
01 class CBlockHeader1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162/** Nodes collect new transactions into a block, hash them into a hash tree, * and scan through nonce values to make the block's hash satisfy proof-of-work * requirements. When they solve the proof-of-work, they broadca ...
比特币源码解析-数据结构-共识
简介共识机制是区块链研究领域的热点,比特币采用的是POW机制,通过大量的算例来解决一个困难性问题从而产生新的区块,而正因为产生新的区块需要大量的算例,网络中的节点才相信最长的链是最可靠的,这种最长链原则也是比特币中共识的原理。
文件名 pramas.h
1class Consensus
Consensus12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970namespace Consensus {enum DeploymentPos{ DEPLOYMENT_TESTDUMMY, DEPLOYMENT_CSV, // Deployment of BIP68, BIP112, and BIP113. DEPLOYMENT_SEGWIT, // Deployment of BIP141, BIP143, a ...