【问题标题】:Power efficient video streaming from an Android device来自 Android 设备的高效视频流
【发布时间】:2012-08-23 07:55:55
【问题描述】:

我正在对从安卓设备的前置摄像头到本地服务器的视频流进行一些实验。目前我打算使用WiFi。我将来可能会转向蓝牙 4.0。

我正在寻找与协议选项(TCP、UDP、...?)和视频编解码器相关的见解、经验、注意事项和应考虑的其他想法。图像质量应该足以在服务器端运行计算机视觉算法,例如人脸和物体检测、识别和跟踪。最大的担忧是权力。我想确保流媒体尽可能节能。我理解更高的能效意味着更低的帧速率。

另外,我需要发送视频帧而不直接在屏幕上显示它们。

谢谢。

【问题讨论】:

    标签: android video-streaming power-management battery


    【解决方案1】:

    你没有提到你是否会在设备上进行编码或解码。

    一些提示: 一般来说,UDP 的耗电量会更少,尤其是在网络条件恶化的情况下: 见http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.5517&rep=rep1&type=pdf 在 google 上查看更多关于此的论文

    就编解码器而言,一般而言,就编码和解码所需的功率而言,您可以说顺序是 H264 > MPEG4 > H.263。

    比特率越高,解码所需的功率就越大,但编解码器的差异比比特率的差异更大。我这样说是因为要获得与使用 H.263 的 H.264 流相同的质量,您需要更高的比特率。但是,在该比特率下的 h.263 应该比在较低比特率下的 H.264 消耗更少的功率。所以不要跨编解码器应用它。只需在选择的编解码器上使用尽可能低的比特率/帧率。

    在编码中,虽然非常低的比特率会使编码器工作更加困难,因此会增加功耗。所以编码比特率应该很低,但不能太低以至于编码器被拉伸。这意味着选择一个合理的比特率,它不会产生连续的块状流,但会产生不错的流输出。

    在每个编解码器中,如果您可以控制编码,那么您也可以控制解码能力。以下适用于两者: 即去块,B 图片将增加功率要求。保持较低的配置文件 [H.264 的基线、MPEG4 的简单配置文件和 H.263 的基线] 将导致编码和解码的功率要求更低。如果可以,在 MPEG4 中关闭 4MV 支持。使流更易于解码。请记住,每一项都会对质量产生影响,因此您必须找到可接受的质量。

    此外,除非您可以真正测量功耗,否则我不确定您是否需要对工具集进行非常精细的调整。只需坚持较低的配置文件就足够了。

    捕获期间的视频质量越差,编码期间所需的功率就越多。因此,高光视频需要较少的编码工作,低光视频需要更多功率。

    无需将视频发送到屏幕。您通过套接字接收视频并使用该数据做任何您想做的事情。那取决于你。您不必解码和显示它。

    编辑:添加一些我可以想到的东西

    一般来说,编解码器的选择及其配置文件将是影响视频编码/解码系统功耗的最大因素。

    最大的不同可能来自设备配置。如果您在设备中具有特定编解码器的硬件加速器,则使用这些硬件加速器可能比使用软件编解码器更便宜。因此,虽然 H.264 在软件中可能需要比 MPEG4 更多的功率,但如果设备在硬件中具有 H.264,那么它可能比在软件中的 MPEG4 便宜。所以检查你的设备硬件能力。

    视频分辨率也很重要。较小的视频编码成本更低。当运行较小的分辨率时,您可以以较低的速度为您的设备计时。

    【讨论】:

    • 感谢您的详细回答。关于使用 UDP 的快速问题。有没有一种简单的方法可以在 Android 设备上一次抓取一个 H264/H263 帧?如果没有,则需要将视频流分解为帧,然后再打包并作为 UDP 数据包发送。
    • 你必须使用rtp协议发送。 live555 或 ffmpeg 可以为您完成。 Google for spydroid。
    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多