有没有 Android 端多屏播放一个视频的方案

15 天前
 neimengwuyanzu

现在公司设备是一个大型 Android 设备类似外面投放那种广告机,然后外接了一个 hdmi 线连接一个显示器

现在有个需求就是上下屏要各自播放一个特效视频,但是遇到的问题是机子性能有限,下屏会播放的慢一点,有时候 0.5 秒有时候 1 秒之类的,尝试过在视频加载完成时候在通知 Presentation 开始播放视频,但是效果还有不可控

感觉解决思路好像不对,是不是应该往多屏播放一个视频的方向去考虑,类似演唱会那种很多小屏组成一个大屏,然后播放一个视频这样的解决思路,而不是两块屏幕两个视频播放控件同步开始播放

1357 次点击
所在节点    程序员
23 条回复
RHG
15 天前
有网络连接的话,可以把播放的视频弄成一个在线视频信号源,播放设备连接信号源,信号源可以设置多个不同的,切换播放内容只用更改视频源播放内容即可。
qhd1988
15 天前
试试 ffmpeg 合并成一个视频来播放?比如两个 1920x1080 的视频,合并成 1920*2160 的视频,然后"全屏"播放?
neimengwuyanzu
15 天前
@RHG 有网络连接,但是这个是直接下载到本地的 视频大的也就 20M 左右 小的 7-8M ,按理说不是播放本地视频比网络视频效果更好么
neimengwuyanzu
15 天前
@qhd1988 这个有想过,但是目前看的效果是 外接屏只能复制主屏的内容
tool2dx
15 天前
配置强的作为主屏,另一个作为副屏,主屏向副屏实时发送当前画面的 rsp 推流,可以两个屏幕同步播放的。

稍微改一下 scrcpy-android 端代码就行。
RHG
15 天前
@neimengwuyanzu 看下视频编码方式,比如视频是 H265 的,播放设备不能硬解,双路播放也可能不流畅。那种广告机内置安卓可能还是 4.4 的呢,芯片都弱的不行。
neimengwuyanzu
15 天前
@RHG Android 是 11 得,芯片应该是两元店处理货,UI 复杂一点都会明显卡顿
jifengg
15 天前
同意 @RHG 的观点。看下编码格式,换 h264 试试。另外播放器用的是啥,支持硬解吗?
neimengwuyanzu
15 天前
@jifengg 用的是原生的 videoview ,尝试过用第三方播放器加 ijk/ExoPlayr2 内核,结果就是视频清晰了一点,结果播放起来更卡了,视频源文件只能看到是 mp4 的
JensenQian
15 天前
楼主那个广告屏的不会是那种四个 A53 的,十年前的那种或货吧
不过那种放个 1080P 的应该没什么问题吧
我家里的旧电视盒子就是这种,放个 1080P 的没什么问题吧
neimengwuyanzu
15 天前
@JensenQian 系统信息里看不到硬件信息,甚至没办法插线调试,只能通过 WIFI 调试,还一会儿一断的,单播放一个视频还行,但是在页面逻辑里插播一下 就会是不是卡一下子
felixlong
15 天前
@neimengwuyanzu 你这上下屏是一台 Android 还是两台 Android 呀? 一台的话简单地用两个 ExoPlayer2. 在 Render 的时候做个时间同步就行。要卡一起卡。
neimengwuyanzu
15 天前
@felixlong 一台设备,现在处理逻辑也是这样,慢的主屏加载完成开始播放的回调里通知上屏开始播放,播放完成后一起隐藏,但是效果不太稳定,有时候下屏开始播放了也会卡顿几下,导致不同步
MozzieW
15 天前
问题描述不是很清楚,看起来是广告机自带一个屏幕,然后还有一个外接屏?

先确定是机器性能不够掉帧还是同步逻辑问题,“有时候 0.5 秒有时候 1 秒之类”,看着是同步逻辑问题。测试卡顿,可以录制一个计时视频,精度毫秒的。

十年前的机器也是支持 1080P 的,两个 1080 P 的问题是内存大点。如果是性能不够,考虑降低视频清晰度到 720P ,还有帧数降低到 30 。
neimengwuyanzu
15 天前
@MozzieW 确实不太清楚,因为这个表现出来的效果多少有点奇怪

机器是一个 Android11 系统的机器,通过 hdmi 线外接了一个显示屏,通过 Presentation 来控制 UI

然后就是主屏会通过条件触发视频播放,现在的逻辑是弹出一个全屏的 dialog 播放视频,控件用的 videoview ,Presentation 的 UI 也是用的 videoview ,在主屏视频文件加载完通知 Presentation 开始播放视频,主屏播放完成后通知 Presentation 和主屏一起隐藏 videoview

目前的情况就是 主屏有时候播放的视频会卡顿几下,并不是全程卡顿,上屏基本没什么卡顿,视频文件是下载到本地的 1080X1920 MP4 视频

目前怀疑是机器性能问题,因为单只播放下屏视频的话 是很流畅没什么问题的
pipilu
15 天前
简单,把 2 个视频剪辑成上下那种
pipilu
15 天前
@neimengwuyanzu Mp4 是文件类型,用 ffmpg 看下实际编码,降低视频源解码码率 baseline 啥的
McVander
15 天前
副屏我记得可以创建虚拟屏幕同步主屏的内容,需要设置个标志来着。这样的话与主屏就保持同步了。只播放一个视频就可以了
tool2dx
15 天前
既然磁盘问题导致的卡几秒,那么就用 videoview getCurrentPosition(),过几秒就主动同步一样。如果两者偏差太大,就 seekto 强制画面同步一次。
kldd529
15 天前
可以用集群 来同步或修正播放

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

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

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

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

© 2021 V2EX