请教视频转码边转边播技术

2 天前
 albin504

https://help.aliyun.com/zh/oss/live-transcoding

需求是这样:视频上传到对象存储之后,能够让用户尽快可播放。 这里涉及到视频转码,有两种主流方案:

1 、离线转码。 视频上传后,利用 ffmpeg 实现离线转码。特点是转码耗时太久,1 小时 1080P 视频完成转码要 45 秒以上(使用 GPU 硬件资源的情况下,如果使用 cpu 更慢)。意味着用户上传完视频之后不能立马播放

2 、实时转码。 用户边播边转,实现几乎零延迟。

目前遇到的问题是:在阿里云不提供服务的国家,像 aws 、google 这些云厂商不提供边转边播能力,只有离线转码。

问题: 1 、如果自建边转边播能力,难度大吗? 有成熟的技术栈吗? 2 、是否有一些其他的付费方案(比如购买一套实时转码服务)可选择?

4037 次点击
所在节点    程序员
60 条回复
cheng6563
2 天前
ffmpeg 本身就能开端口在线转码啊
lpe234
2 天前
有些想法可能不太适合,可以参考下:

1. 是否可以通过非技术手段,让用户等待下。比如 提示用户转码/审核中?
2. 是否可以先转码几分钟,用来做视频预览。等全部转码完毕后,再提供完整播放
3. m3u8 那个也不算特别实时吧。之前有个需求要在网页播放 RTSP 视频流,我就用 ffmpeg 转码成 ts 文件播放的。

`自建边转边播能力,难度大` 这个我感觉难度可能在于并发量和计算资源使用率上面。 我那需求就几个摄像头,CPU 转也没太大压力
cccn
2 天前
ningxing
2 天前
搜索下分片技术,可以实现你要的效果
ETiV
2 天前
没看懂你这个场景到底是直播还是点播
nginx 有个 rtmp 模块,用它入门最简单了
wzy44944
2 天前
实现上不复杂,你发的那个链接里就有技术细节,就是生成 hls 格式让播放器播放。
需要在存储系统和播放器之间加一层代理,做 m3u8 的生成和触发 ffmpeg 转 ts
1. 播放开始时,根据视频时长,预先把 m3u8 生成吐出来给播放器
2. 播放到哪个 ts 就计算下在视频中的位置,触发这个位置之后的转码
可以把 ts 的大小调到 10s ~ 15s 左右,这样保证每次拖动进度,开播时间在 1s 甚至几百 ms 以内。
wang9571
2 天前
AWS 不是有 MediaLive 服务可以转码吗
wjx0912
2 天前
plex 的用户量可能最多,个人喜欢 jellyfin 。看你用户量有多大
lambdaq
2 天前
楼上说的 m3u8 就是你要的吧。原理是 1 小时 1080P 视频完成转码要 45 秒以上,但是你截取 10s 一小段转码上传不需要 45 秒啊。你就一小段一小段的转
capric
2 天前
mediamtx 和 ZLMediaKit 可以支持很多协议实时转码
https://github.com/bluenviron/mediamtx
https://github.com/ZLMediaKit/ZLMediaKit
wangxiaoer
2 天前
把视频文件转成直播格式是不是算边转边播,ffmpeg 支持把视屏转成 hls 吧
albin504
2 天前
@ETiV 点播。类似于用户在爱奇艺上传一个视频,上传完成后可立马进行播放
albin504
2 天前
@lpe234 嗯,产品体验层面,产品不需要等待太久
albin504
2 天前
@wang9571 谢谢提供的信息。

AWS Elemental MediaLive 是 AWS 提供的一项 实时视频处理服务,主要用于将实时视频流( live video )进行编码、转码和打包,然后分发给观众。它属于 AWS 媒体服务( AWS Media Services ) 生态的一部分,常用于 直播( live streaming )场景。

说这个常用于直播场景,我们的需求是在线点播,不知道是否是同一种技术?
albin504
2 天前
@capric 谢谢,这个看起来也是直播技术。 能详细说一说,要满足我们的实时点播场景的需求,这个开源项目该如何使用吗? 或者有文档吗
albin504
2 天前
@wangxiaoer 支持转成 hls ,问题是这个过程太慢(转成 hls 前要先转码,因为 hls 支持的编码有限,对于不支持的编码必须先转码)
albin504
2 天前
@wzy44944 谢谢!思路很好能满足需求,如果有来源实现就好了
xmumiffy
2 天前
先切片再转,如果改不了 m3u8 ,那就转完再合并
wnpllrzodiac
2 天前
网盘支持在线播放都是这么搞的。动态生成 ts 切片。
albin504
2 天前
@wnpllrzodiac 了解。动态生成 ts 切片,有成熟的开源方案推荐吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1157712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX