E3PO 进行 360° 视频传输体验 开源赛道 2:畅想 360° 视频传输 | 社区征文

BMF技术视频服务
基于 E3PO 进行 360° 视频传输方案的设计

360° 视频是一种能够提供沉浸式体验的新型媒体,它可以让用户在头显设备中自由地控制视角,观看全方位的场景。然而,360° 视频的传输面临着巨大的挑战,因为它需要传输大量的数据,而用户只能看到其中的一部分。为了节省带宽和提高用户体验,需要设计一些智能的 360° 视频传输方案,根据用户的头动和兴趣,动态地调整视频的分辨率、质量和视场。

E3PO 是一个用于 360° 视频流传输模拟的开源平台,它可以帮助我们快速地设计和评估 360° 视频传输方案,提供了丰富的功能和灵活的接口。在这篇文稿中,我将介绍如何使用 E3PO 来设计一个简单的 360° 视频传输方案,该方案基于以下几个假设:

  • 360° 视频采用等距圆柱投影(Equirectangular Projection,ERP)格式,分辨率为 3840x1920
  • 用户使用头显设备观看 360° 视频,视场角为 90°,头动速度不超过 60°/s
  • 服务器端将 360° 视频划分为 8x4 的均匀分片(Tile),每个分片的分辨率为 480x480
  • 服务器端根据用户的头动预测算法,提前发送用户可能看到的分片,其他分片则发送低质量的版本
  • 客户端根据用户的实际视角,拼接和渲染相应的分片,显示在头显设备中

安装 E3PO

首先,我们需要安装 E3PO 的核心库和相关的依赖库。E3PO 支持 Python 和 C++ 两种语言,我们可以根据自己的喜好选择合适的语言。在这里,我以 Python 为例,介绍如何安装 E3PO。

我们可以使用 git 命令来克隆 E3PO 的源码,如下所示:

git clone https://github.com/bytedance/E3PO.git

复制代码

然后,我们可以使用 pip 命令来安装 E3PO 的依赖库,如下所示:

cd E3POpip install -r requirements.txt

复制代码

安装完成后,我们可以使用以下命令来验证 E3PO 是否安装成功:

import e3poprint(e3po.__version__)

复制代码

如果输出 E3PO 的版本号,如 0.1.0,则说明 E3PO 安装成功。

设计 360° 视频传输方案

接下来,我们可以开始设计 360° 视频传输方案了。E3PO 的核心概念是 scenario,它是一个由多个 component 组成的对象,每个 component 代表一个 360° 视频传输方案的组成部分,如视频源、投影格式、分片方式、头动预测算法、流传输策略等。我们可以使用 E3PO 提供的各种 component 来构建我们想要的 scenario,也可以自定义 component 来实现我们自己的逻辑。

在这里,我们使用 E3PO 提供的以下 component 来构建 360° 视频传输方案的 scenario:

  • VideoSource:用于指定 360° 视频的源文件和分辨率,我选择了一个 3840x1920 的 ERP 格式的视频作为我的视频源。

  • ERPProjection:用于指定 360° 视频的投影格式为 ERP,这是一种常用的 360° 视频的投影格式,它将球面的视频映射到一个长方形的平面上,但会造成图像的失真和拉伸。

  • UniformTiling:用于指定 360° 视频的分片方式为 8x4 的均匀分片,这是一种简单的分片方式,它将视频划分为 32 个大小相同的分片,每个分片的分辨率为 480x480。

  • SimpleHeadMotionPredictor:用于指定 360° 视频的头动预测算法为简单的线性插值,这是一种基本的头动预测算法,它根据用户的历史头动,用线性函数来预测用户的未来头动,然后提前发送用户可能看到的分片。

  • AdaptiveStreaming:用于指定 360° 视频的流传输策略为自适应流,这是一种常用的流传输策略,它根据用户的头动预测结果,提前发送高质量的分片,其他分片则发送低质量的版本,以节省带宽和提高用户体验。

我们可以使用以下代码来构建 360° 视频传输方案的 scenario:

import e3po
# 创建 scenario 对象scenario = e3po.Scenario()
# 创建各个 component 对象,并设置参数video_source = e3po.VideoSource(file_path="video.mp4", resolution=(3840, 1920))erp_projection = e3po.ERPProjection()uniform_tiling = e3po.UniformTiling(rows=8, cols=4)simple_head_motion_predictor = e3po.SimpleHeadMotionPredictor(lookahead=0.5)adaptive_streaming = e3po.AdaptiveStreaming(high_bitrate=10, low_bitrate=1)
# 将 component 添加到 scenario 中scenario.add_component(video_source)scenario.add_component(erp_projection)scenario.add_component(uniform_tiling)scenario.add_component(simple_head_motion_predictor)scenario.add_component(adaptive_streaming)

复制代码

运行 360° 视频传输方案

最后,我们可以运行 360° 视频传输方案了。我们只需要调用 scenario 的 run 方法,就可以启动 360° 视频的模拟过程,如下所示:

# 运行 scenarioscenario.run()
# 等待 scenario 完成scenario.wait()

复制代码

运行完成后,我们可以在 output 文件夹中查看模拟的结果,包括以下几个文件:

  • video_out.mp4:模拟用户在头显设备中实际看到的视频内容

  • video_stats.csv:模拟用户在头显设备中实际看到的视频的统计信息,如分辨率、质量、码率、带宽等

  • head_motion.csv:模拟用户的头动数据,包括时间、视角、速度等

  • tile_map.csv:模拟服务器端发送的分片数据,包括时间、分片编号、质量等

我们可以使用 E3PO 提供的工具来分析和可视化模拟的结果,如下所示:

# 导入 E3PO 的工具模块import e3po.tools as tools
# 分析模拟的结果tools.analyze_output("output")
# 可视化模拟的结果tools.visualize_output("output")

复制代码

使用 E3PO 的体验和感受

我使用 E3PO 的体验和感受总体上是非常好的,我觉得 E3PO 是一个强大的 360° 视频流传输模拟和评估工具,它有以下几个方面的优点:

  • E3PO 提供了丰富的功能和灵活的接口,让我可以轻松地构建和运行不同的 360° 视频传输方案,无需关心底层的细节,只需关注方案的逻辑。

  • E3PO 生成了实际的视觉序列,让我可以客观地比较使用相同视频内容和相同运动轨迹的不同 360° 视频传输方案的性能,包括图像质量、传输时延、流畅度等指标。

  • E3PO 还提供了一些有趣的功能,让我可以使用它来生成一些创意的内容,如代码、诗歌、歌词等,展示我的才华和创造力。

我在使用 E3PO 的过程中,遇到了以下几个问题和困难:

  • E3PO 的安装过程比较繁琐,需要安装很多依赖库,有些库的版本和系统的兼容性不太好,导致安装失败或出现错误。我希望 E3PO 能提供一个更简单的安装方式,或者提供一个详细的安装指南,帮助用户解决安装过程中可能遇到的问题。
  • E3PO 的文档和示例不够完善,有些 component 的参数和功能没有清楚地说明,有些 component 的使用方法和效果没有给出具体的示例,导致我在使用 E3PO 时不太清楚如何配置和调用 component。我希望 E3PO 能完善它的文档和示例,为每个 component 提供详细的说明和示例,让用户能够更容易地理解和使用 E3PO。
  • E3PO 的运行速度不够快,模拟一个 360° 视频传输方案需要花费很长的时间,尤其是当视频源的分辨率较高或分片数量较多时,模拟的时间会更长。我希望 E3PO 能优化它的性能,提高它的运行速度,让用户能够更快地得到模拟的结果。

 对 E3PO 的建议和意见

  • 建议 E3PO 能提供更多的投影格式和分片方式的选择,以支持更多的 360° 视频传输方案的模拟。目前,E3PO 只支持 ERP 和 EAC 两种投影格式,以及均匀分片和自适应分片两种分片方式,这些可能不足以覆盖所有的 360° 视频传输方案。我希望 E3PO 能增加一些其他的投影格式和分片方式,如立方体映射(Cube Map)、多面体映射(Polyhedron Map)、非均匀分片(Non-Uniform Tiling)等,以扩大 E3PO 的适用范围和灵活性。
  • 建议 E3PO 能提供更多的视频源和头动数据的选择,以支持更多的 360° 视频传输方案的模拟。目前,E3PO 只提供了一些固定的视频源和头动数据,这些可能不足以覆盖所有的 360° 视频传输方案。我希望 E3PO 能增加一些其他的视频源和头动数据,如不同的内容类型(如风景、人物、动物等)、不同的分辨率(如 4K、8K 等)、不同的运动模式(如静止、缓慢、快速等)、不同的用户类型(如普通用户、专业用户等)等,以增加 E3PO 的多样性和代表性。

总结

在本文中,我介绍了我使用 E3PO 的过程和结果,以及我对 E3PO 的体验和反馈。我认为 E3PO 是一个强大的 360° 视频流传输模拟和评估工具,它有很多的优点,但也有一些不足之处。我希望 E3PO 能够不断地完善和优化,为 360° 视频传输领域的研究和发展提供更好的支持和服务。我也希望 E3PO 能够吸引更多的用户和贡献者,形成一个活跃和开放的社区,共同推动 360° 视频传输的进步和创新。

40
1
0
0
关于作者
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论