视频类应用在区块链上的应用

  • 1.用户
  • 2.视频
  • 3.视频存储
  • 4.评论/弹幕
  • 5.标签
  • 6.赞/打赏
  • 7.ipfs 直播
  • 8.分类目录
  • 9.专辑
  • 备注

本文阐述视频应用在区块链上的应用的个人想法和观点。

2种结构的数据:

  1. 文件存储
    主要引用IPFS的概念:基于文件内容的寻址,分布式存储。不存在全节点,即使存在(创造)意义不大。
  2. 资源索引
    主要引用eth的感念:分布式、p2p,挖矿,内容是同步的。每个全节点拥有完全一致的数据和状态变量。
    即一致性数据和非一致性数据集。

例子:
以下内容为学习solidity时的见解,其他描述语言可以雷同.

1.用户

在区块链中无法分辨用户,识别个体采用地址,因此在此一个地址即为一个用户。用户需要有自己的描述属性,即【昵称】【简介】【头像】,在此笔者尝试了2种实现方式,
① address => ipfs object.
将头像文件上传到ipfs空间上得到hash值,或者头像做base64编码,组合到一个用户对象(json字符串),将用户对象上传到ipfs空间上,得到一个ipfs的hash,储存到eth网络中。看起来像:



② address => struct.将头像文件上传到ipfs空间上得到hash值,其他文本摘要保存到eth数据库里。

当然也可以将图片二进制文件直接丢进eth数据库,但是在实践过程中2K大小的头像加一些说明文字,储存一个用户实例旷工费超过0.0007eth,(按照当前汇率已经超过1美元)。
其实用户个体出现在区块链中,目的还是要与用户对于起来,更具有人性化,毕竟这些应用都是服务于人的。

2.视频

视频检索可以参考优酷等视频网站的数据结构,但是也要考虑传统数据库的优势和区块链的劣势,因此将结构定制成以下这样:
id自增=>视频结构
视频结构:
1.视频文件:ipfs对象;
2.视频文件的描述:(此内容冗余,可以直接读取ipfs获得),比如文件大小,内容格式、媒体内容的宽高,时长;
3.视频描述:视频的标题,描述,封面,时间戳,缩略图
4.应用数据:作者地址、评论、标签、打赏

同理,在此也使用上述用户结构的描述方法,将部分索引变量、储存变量置换位置。
在这里要思考一个问题:尽可能的将数据放到检索变量上还是储存变量上。
所有用户都是不可信任的,在协议中规定要提交ipfs对象,在eth中如果提交非ipfs对象也能记录,eth无法调取ipfs端去验证真伪(话说eos呢?在索引协议中是否可以调取储存网络上的信息?未来一定会实现的。)
写本文时作者未能实现在协议(合约)内去调取ipfs对象,封面可以自定义(最好的情况是在视频时间内截取)
缩略图对象包含2部分,1 缩略图的图片文件,

2该图片的描述。

{宽:高:横向切片数量:纵向切片数量:时间:{第一切片:0秒第二切片:1分钟第三切片:2分钟}
}

在播放器加载时可以在进度条加载该资源进行预览。
为了更好的统一协议,第一切片 应该被描述成横向第N块,纵向第M块,或者 直接坐标点(x,y,w,h)或者(x1,y2,x2,y2)

3.视频存储

视频存储需要考虑到多个方面:
1.同一个视频资源内容,应该对应多个质量(即360P、720P、1080P、4K、60FPS、以及不同码率)
2.同一个视频资源内容,应该对应多种封装容器(mkv容器、mp4容器、mov容器、flv容器、f4v容器、ts切片)和编码(h264编码、h265编码、aac编码、flac编码)
3.上文视频结构定义中的视频描述应该适合视频存储的整个对象。
这里列举2种方案:

这是一种错误的示范↑。


注意:目前支持原生ipfs协议的软件并不多,因此要特别注意网关转换,让不支持ipfs的软件能从http(https)网关处拿到数据。协议的迭代是不容易的,一旦完成协议部署,或者未来升级,都要考虑到对旧数据的兼容和包容,因此在在以上图示中应该包容那种错误的示范,在初期应用阶段也应该判断是否为错误架构,并作出相应的对待。
视频存储需要做到诚实,同一个资源的不同编码、封装、质量,其对于是同一个内容,同一时间点的截屏应该完全相同。
注意:本文只涉及到协议(合约)部分,不包括前端调用,但是要为前端调用做好充足的准备,比如要为窄带网用户提供低码率或者低分辨率的视频流,在协议普及过程中(推广、分享),势必通过ipfs网关转http传输协议来完成,也要为网页用户提供视频流。
注意:上文图示中多个视频流的描述方法并非首选,应该使用视频编码器、音频编码器、视频像素、比特率来描述视频的清晰程度,但由于此类参数过于专业化,使用者无法立即理解其中的含义,因此要做好易用性和专业性的平衡。

4.评论/弹幕

这里的评论也指代弹幕功能,不仅仅存储文本信息,需要完成简单富文本格式,还要包括弹幕的位置等。针对回复评论,需要得到回复给哪条评论,所以评论包含以下几类信息。
1.评论内容
2.弹幕数据(弹幕类型、颜色等信息)
3.时间(①评论的UTC时间;②评论在视频的第几秒时间)
4.是否回复之前的评论

关于直播的弹幕和评论也应该符合以上结构

5.标签

标签主要作用是订阅、分类、投票,单个视频可以有多个标签,每个标签应该包含投票是数量,比如 一个视频的标签为【短视频】15票;【搞笑】80票;【游戏】1票,可以使用标签分辨出该视频属于什么类别?它是一个搞笑的短视频。但是【游戏】标签有1票,有人给他打了游戏的标签,但如果视频内容不是游戏,它也仅仅只有一票,算不了什么。

6.赞/打赏

这是内容提供者的主要经济(代币)收入,内容质量决定一切。

7.ipfs 直播


ipfs 直播 功能很好的利用了ipfs pubsub pub 和ipfs pubsub sub。
这里着重要解释一下回看:其实可以合并当前分片和历史分片的m3u8信息,广播一次即可,但是这样做一定会对ipfs空间造成浪费,广播当前ts分片hash和广播历史分片hash可以选择不同的频率、或者广播历史分片hash可以做订阅,由客户端发送一个广播,我需要获取历史hash,处理进程再发送一个历史分片的hash也可以。
在回看过程中发的互动信息,由于是过去时间,不应该显示给主播看,或者展示给主播看到是回看发的信息,但这些信息需要存入自己记录的这份视频文件中,因为在直播结束或者直播过去时状态下可以发布视频,这回车记录弹幕。

8.分类目录

到这里,所有视频都是平行的,并不进行分类。分类的功能并不包含在协议中,在Dapp应用中,如果有中心组织去设置分类,将破坏Dapp的规则。
使用标签作为分类依据,这一点很好的提现了民主。

9.专辑

这一点和大多数视频应用一样,也需要专辑(分组视频)的结构,其中要实现:
1.分组的名称、简介、封面、分组的封面
2.引用的视频的id

备注

对于区块链应用编程思想来说:
1.可以不设计删除、更改功能,因为数据是依赖于日志写入生成的,而非当前状态,这意味着,想看到删除之前的状态变量非常容易,需要消耗的资源量不比重新发布一个新的要少。
2.内容监管,这一点希望evm这样的虚拟机环境能提供或者调取判断资源合法性的接口,协议本身能保证数据合法性,无法保证内容合法性。特别是储存类区块链,这里建议采用中心化的核审模式。

视频应用在区块链上的应用相关推荐

  1. 优秀项目解析:区块链上的房地产交易

    区块链前哨导语:买房租房中,需要了解多少知识从而规避欺诈风险?如果区块链这一新兴技术与房地产这个古老的概念相结合,会碰撞出怎样的火花?房地产物业的所有权验证与转让将呈现出怎样的面貌?美国有家科技初创公 ...

  2. eos区块链 java客户端_在EOS区块链上使用EOSJS和scatter开发dApp

    由于我一直在深入研究EOS dApp的开发,我看了不少好文章.在这里,我汇总了下做一些研究后得到的所有知识.在本文中,我将解释如何使用EOSJS和scatter.我假设你对智能合约以及如何在EOS区块 ...

  3. 区块链上的虚拟开放世界游戏是怎样的?| TVP思享

    导语 | 区块链是一种具有颠覆性意义的互联网基础设施,这种颠覆性体现在可以为各行各业构建低成本的资产交易功能,进而让资产可以更方便地流动.金融行业本身具有虚拟属性,区块链天然支持金融特性,所以金融行业 ...

  4. 你欠快播的会员,可能要充到区块链上了

    "我放下过天地,却从未放下过你." --中国"最有种"的男人王欣 今日,全国企业破产重整案件信息网披露,深圳金亚太科技有限公司对快播提出破产清算申请,广东省深圳 ...

  5. EOS区块链上EOSJS和scatter开发dApp

    由于我一直在深入研究EOS dApp的开发,我看了不少好文章.在这里,我汇总了下做一些研究后得到的所有知识.在本文中,我将解释如何使用EOSJS和scatter.我假设你对智能合约以及如何在EOS区块 ...

  6. 行走在区块链上的智能合约

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 我和你打一个赌,我赌明天是雨天,你赌是晴天,赌注100大洋.假设明天是晴天,然后你跑过来管我要100大洋的赌金,我装疯卖 ...

  7. BCH区块链上的预言机项目——Oracles

    近日,加密开发人员cgcardona在r/btc论坛发布了一个由个人开发的BCH相关项目,项目命名为Oracles(预言),它可用于预测市场.无信任下注等,目的是为了提供一种快速引导Oracles数据 ...

  8. BCH区块链上启动新应用程序Chainfeed

    据外媒报道,比特币现金(BCH)开发人员最近推出了一个新的应用程序Chainfeed,该平台能够将所有链上数据结合起来,并进行全球实时新闻推送.此前BCH区块链上曾启动了社交媒体应用Memo和Bloc ...

  9. 在区块链上表白——使用C#将一句话放入比特币的区块链上

    最近在看区块链和比特币的知识,顺便简单研究了一下BitCoin的脚本语言,发现OP_RETURN这个命令可以在后面放入自己想说的内容,很多侧链啊,公证之类就是利用了这个特性,可以把一句话,或者一个哈希 ...

  10. 比特币区块链上最小的单位“聪” Satoshi STA 简介

    9年前,美国程序员拉斯勒-豪涅茨( LaszloHanyecz)用10000比特币买了两个披萨.去年年初,这位程序员再次使用比特币,又买了两个披萨,这次只用了649000个Satoshi. 就像传统货 ...

最新文章

  1. java怎么创建子程序_JVM执行子程序
  2. python文件读取输出-python分批定量读取文件内容,输出到不同文件中的方法
  3. 介绍Python中方法ljust(),rjust(),center()和zfill()
  4. 老板也是人:孤独的企业家
  5. JFinal 1.5 发布,JAVA极速WEB+ORM框架
  6. python collections 模块中的 deque
  7. 【Elasticsearch】你看懂 Elasticsearch Log 中的 GC 日志了吗?
  8. java 怎么调用clojure_如何从Java调用Clojure宏?
  9. 工作的时候用到spring返回xml view查到此文章亲测可用
  10. HDOJ--2089--不要62
  11. pl/sql 过程分页显示小案例
  12. 【MPEG】DVB / ATSC / ISDB区别
  13. 电脑速度慢是什么问题导致的
  14. 什么水果有利于饭后消化?
  15. Open the World 丨 COSCon'22志愿者招募正式启动
  16. Systemd Spec 宏
  17. 808《数据结构》参考答案
  18. dblink 怎么用
  19. c语言程序设计讲义,《C语言程序设计》案例讲义 - 完整版
  20. matlab曲线绘制——初学者入门

热门文章

  1. 一个软件工程师的成长之路(二):回味经典组合 DOS + 五笔 + WPS + FOXBASE
  2. 2020的另一面:5G的斯普特尼克之年
  3. LG30刷小米系统_小米10 Pro 手机 安卓 11 Beta1 线刷包放出,附刷机教程
  4. AutoCAD2014 无法通过快捷方式启动
  5. c#控件chart制作自动更新的温湿度实时曲线图
  6. 大数据发展现状和趋势
  7. 如何快速出机械工程图
  8. mac os+selenium2+chrome驱动+python3
  9. mongovue使用简介
  10. Python 实现窗函数