【问题标题】:How to speed up ffmpeg streaming on android using libvlc?如何使用 libvlc 在 android 上加速 ffmpeg 流式传输?
【发布时间】:2019-11-09 21:09:15
【问题描述】:

我正在我的 Android 应用程序中通过 GoPro 直播。我使用 ffmpeg 从 GoPro 接收流数据,并使用 vlc 在表面视图中播放它。我使用了 KonradIT here 提供的代码。用于 ffmpeg 的主要命令是:

-fflags nobuffer -f mpegts -i udp://:8554 -f mpegts udp://127.0.0.1:8555/gopro?pkt_size=64

vlclib 的选项有:

options.add("--aout=opensles");
options.add("--audio-time-stretch");
options.add("-vvv");

输出更糟。它很慢,速度约为 17 FPS。一件烦人的事情是流媒体图片非常小,据我尝试,没有办法让它更大和拉伸。 我想知道是否有任何命令可以加快流式传输(无论如何,即使降低质量)?在ffmpeg或vlc的一边。

【问题讨论】:

  • 你是在用ffmpeg做数据包的中继还是对mpegts数据包进行转码或者对mpegts数据包进行转换(改变数据包大小)。
  • 据我所知,我们接收 mpeg 并发送 mpeg,它的作用类似于玩家用来理解流的虚拟端口或门。所以,我认为它似乎做了数据包的中继。我不确定(因为 GoPro 没有官方解释,这些都是非官方的)

标签: android ffmpeg vlc live-streaming libvlc


【解决方案1】:

如果只是转发数据包,试试这个:

ffmpeg -fflags nobuffer -f mpegts -i udp://:8554 -c:v copy -c:a copy -f mpegts  udp://127.0.0.1:8555/gopro?pkt_size=1316

您可以根据网络的 MTU 大小 (

使用此命令,我们不会对传入的数据包进行转码、调整大小和中继。

【讨论】:

  • 抱歉耽搁了,我无法访问互联网。它只是没有用。 FPS 和以前一样。与此同时,随着时间的推移,延迟变得比开始时更糟。分析时间和探针大小与输出之间是否有任何关系?
  • 请检查在 GoPro 端捕获帧的 fps。检查您的互联网速度/wifi 速度和您在 Android 设备/应用程序上的处理速度。(由于多种因素,延迟可能会增加)?还会要求您检查任何 PC 端的行为。您在 GoPro 端拍摄的分辨率和 fps 是多少?
  • Gopro 设置为为 FHD 提供 60 FPS。我可以毫无问题地在 PC 上运行代码,并且输出始终保持 FPS。由于我们通过WIFI直接连接到GoPro,我不知道这个过程中涉及的任何其他因素(以及如何检查Android上的处理速度)
  • 你可以查看cpu使用情况:adb shell top。检查 ffmpeg 的日志以查看是否有多个帧被丢弃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 2022-06-23
  • 2013-08-06
  • 2011-06-18
  • 1970-01-01
相关资源
最近更新 更多