iGPN
Vulcan
作品介绍:
利用稳定的跨网资源,在 GPN 内网内实现音视频跨网的传输、保存以及在公网上的播放,并实现所用功能的容器化。
实现方式:
在音视频 TS 文件组播和单播模块,参照利用了 tsplay 的实现。
在接收组播单播流模块,主要使用源码用 C 编写的 GStreamer 技术,用到了其中库的实现。
软件集成到同一个容器里面,主要用到了 Dockerfile ,生成可用 image vulcan/gstreamer:0.0.2 。
如何使用:
前期准备一个 TS 视频文件,或者有对应视频流的组播地址。
视频内容从北京单播到洛杉矶的服务器:
docker run -d --net=host -v /root/movie:/movie vulcan/gstreamer:0.0.2 tsplay /movie/hanzhan.ts 10.10.0.4:7777 – loop
在洛杉矶接收单播流并单播回到北京:
docker run -d --net=host vulcan/gstreamer:0.0.2 gst-launch-1.0 udpsrc uri=udp://10.10.0.4:7777 ! queue ! udpsink host=10.10.0.3 port=7776
在北京把内容放到公网上:
docker run -d --net=host vulcan/gstreamer:0.0.2 gst-launch-1.0 udpsrc uri=udp://10.10.0.3:7776 ! queue ! tcpserversink host=101.251.245.2 port=7775
网络视频流保存到本地:
docker run -d --net=host vulcan/gstreamer:0.0.2 gst-launch-1.0 udpsrc uri=udp://10.10.0.3:7776 ! filesink location=xxx.ts
本地使用 VLC 播放器演示播放效果。
实现功能:
视频文件的单播
根据需求需要将 ts 格式的文件顺序的单播到另外一台设备,采用了成熟的 tsplay 软件,实现视频流稳定的输出。
网络视频流的接收、保存。 对于流式的文件接收,采用的是 GStreamer 多媒体框架。使用 UDP 的传输方式,最大限度的实现视频的流畅、不花屏。
功能组件的容器化。 实现了所有功能的容器化。在 Docker Hub 鲜有关于音视频相关的稳定镜像,希望我们能为社区贡献微薄之力。
总体实现流程。 TS 视频文件--->北京设备单播到洛杉矶设备--->洛杉矶接收单播信号并单播回北京--->北京设备接收并组播到公网、保存。
重点难点:
音视频文件的处理十分依赖系统,系统粘性很大,而服务器的类型却十分难以统一,故而把所有的依赖打包到一个容器中,实现一次构建、随处运行。
视频的传输最难处理的就是网络的不稳定,而我们可以依赖首都在线 GPN 跨网的内网传输,实现高效和低故障的视频流传输。
Docker 相关方面的技术, Docker 相关的高级使用,感谢社区提供的帮助。
关于 GPN:
Global Private Network ,全球私有网络。
针对用户多地部署的需求,首都在线 GPN 服务提供这些点之间的内网连接服务。 GPN 服务是由首都在线全球云环网所承载的, 该网络是由首都在线建设的多环冗余架构的传输网络。使用 GPN 服务,用户分布在全球各地的云节点即具备了内网通讯能力。
首都在线的 GIC ( Global Interconnected Cloud ,全球多点分布式一体化云平台)就是基于 GPN 实现的全球私有网络服务提供的跨界连接的云平台。
想了解更多关于首都在线 GIC 和 GPN 的相关内容,可以访问
www.capitalonline.net ,注册即可免费试用。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.