有没有 Android 端多屏播放一个视频的方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
neimengwuyanzu
V2EX    程序员

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

  •  
  •   neimengwuyanzu 2024-09-04 09:21:17 +08:00 2171 次点击
    这是一个创建于 413 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    23 条回复    2024-09-05 14:04:27 +08:00
    RHG
        1
    RHG  
       2024-09-04 09:43:31 +08:00
    有网络连接的话,可以把播放的视频弄成一个在线视频信号源,播放设备连接信号源,信号源可以设置多个不同的,切换播放内容只用更改视频源播放内容即可。
    qhd1988
        2
    qhd1988  
       2024-09-04 09:45:44 +08:00
    试试 ffmpeg 合并成一个视频来播放?比如两个 1920x1080 的视频,合并成 1920*2160 的视频,然后"全屏"播放?
    neimengwuyanzu
        3
    neimengwuyanzu  
    OP
       2024-09-04 09:47:14 +08:00
    @RHG 有网络连接,但是这个是直接下载到本地的 视频大的也就 20M 左右 小的 7-8M ,按理说不是播放本地视频比网络视频效果更好么
    neimengwuyanzu
        4
    neimengwuyanzu  
    OP
       2024-09-04 09:48:13 +08:00
    @qhd1988 这个有想过,但是目前看的效果是 外接屏只能复制主屏的内容
    tool2dx
        5
    tool2dx  
       2024-09-04 09:50:40 +08:00
    配置强的作为主屏,另一个作为副屏,主屏向副屏实时发送当前画面的 rsp 推流,可以两个屏幕同步播放的。

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

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

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

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

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

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

    目前怀疑是机器性能问题,因为单只播放下屏视频的话 是很流畅没什么问题的
    pipilu
        16
    pipilu  
       2024-09-04 12:29:48 +08:00
    简单,把 2 个视频剪辑成上下那种
    pipilu
        17
    pipilu  
       2024-09-04 12:34:44 +08:00
    @neimengwuyanzu Mp4 是文件类型,用 ffmpg 看下实际编码,降低视频源解码码率 baseline 啥的
    McVander
        18
    McVander  
       2024-09-04 12:59:16 +08:00
    副屏我记得可以创建虚拟屏幕同步主屏的内容,需要设置个标志来着。这样的话与主屏就保持同步了。只播放一个视频就可以了
    tool2dx
        19
    tool2dx  
       2024-09-04 13:23:52 +08:00
    既然磁盘问题导致的卡几秒,那么就用 videoview getCurrentPosition(),过几秒就主动同步一样。如果两者偏差太大,就 seekto 强制画面同步一次。
    kldd529
        20
    kldd529  
       2024-09-04 13:40:57 +08:00
    可以用集群 来同步或修正播放
    MozzieW
        21
    MozzieW  
       2024-09-04 13:53:27 +08:00
    @neimengwuyanzu #15 性能不行,解决思路还是降低视频像素和帧率。
    确定是卡顿导致视频对不上,可以考虑监听视频进度,过快时暂停,等追上来再恢复,但这方案估计体检不好

    完整的解决方法只能自己实现视频播放逻辑,把视频帧的时间对上
    v2demo
        22
    v2demo  
       2024-09-04 17:58:50 +08:00
    之前做过类似的项目,和 19 楼的逻辑一样,同时控制 50 台设备播放相同的视频 播放误差在 200ms 内,肉眼基本无法区分。
    neimengwuyanzu
        23
    neimengwuyanzu  
    OP
       2024-09-05 14:04:27 +08:00
    @v2demo 目前也是用这个方案了,项目是多模块的 用 eventbus 实时传递进度的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3011 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 12:47 PVG 20:47 LAX 05:47 JFK 08:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86