back

eXport-it FFmpeg

什么是 FFmpeg 库?

FFmpeg (https://www.ffmpeg.org/) 是一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。 FFmpeg 是领先的多媒体框架,能够解码、编码、转码、复用、解复用、流式传输、过滤和播放人类和机器创建的几乎所有内容。 它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。

它还具有高度的可移植性:FFmpeg 可以在 Linux、Mac OS X、Microsoft Windows、BSD、Solaris 等各种构建环境、机器架构、和配置。

FFmpeg 库本身在 LGPL 2.1 许可下。启用某些外部库(如 libx264)会将许可证更改为 GPL 2 或更高版本。

这个库是如何集成到Android应用中的

我使用 ffmpeg-android-maker 脚本(贡献者:Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va)来编译库。 该脚本从 https://www.ffmpeg.org 下载 FFmpeg 的源代码并构建库并为 Android 组装它。 该脚本生成共享库(*.so 文件)以及头文件(*.h 文件)。

ffmpeg-android-maker 的主要重点是准备共享库以无缝集成到 Android 项目中。 该脚本准备了要使用的“输出”目录。这不是这个项目做的唯一事情。 ffmpeg-android-maker 的源代码在 MIT 许可下可用。有关更多详细信息,请参阅 LICENSE.txt 文件 https://github.com/Javernaut/ffmpeg-android-maker/ eXport-it FFmpeg 库只是使用 libaom、libdav1d、liblame、libopus 和 libttwolame 编译...但不是所有相关的库。

为了开发对 FFmpeg 的 Java 支持并在 Android 7.1 到 12 上运行,我从 Taner Sener 在 https://github.com/tanersener/mobile-ffmpeg/ 上记录的 MobileFFmpeg 项目开始,该项目不再维护...并在 LGPL 3.0 ...

下获得许可

最后,我准备了一个带有库、包含文件和 Java 支持代码的 JNI Android Studio 项目,并生成了一个 .aar 库文件以作为附加库集成到我现有的项目中。


如何启动多播频道

要启动多播频道,需要使用客户端,以访问本地网络 (Wi-Fi) 上的 UPnP 服务器并支持 FFmpeg。该服务器应该用它导出的文件列表来回答。 如果此服务器支持 FFmpeg,则必须在列表页面顶行的末尾以红色显示小文本“作为频道”。 当文本为“红色”时,单击“播放”按钮的工作方式与使用 UPnP 协议之前一样。如果你点击文本,它应该变成“绿色”,点击“播放”按钮,选择视频或音频文件后,应该会启动一个“频道”。

所选媒体文件的播放方式显然与通过 UPnP 相同,只是启动延迟会因附加任务而变长。 您必须让该客户端继续播放媒体文件以保持管道处于活动状态。

在其他设备上使用此管道

IP 多播不能在 Internet 上工作,它只能在局域网上工作,因此主要在 Wi-Fi 上工作。一个组播数据通道可以同时被多个客户端共享。您正在 Wi-Fi 网络上发送媒体数据流,并在连接的设备上显示这些数据,几乎同步,只是延迟延迟差异。

使用 UPnP 或 HTTP 流式传输时,每个设备都需要所显示视频的带宽,而全局带宽是这两种流量的总和。 通过多播流,我们在 LAN 上发送一个数据流,在多个客户端之间共享。

如果您在启动频道后使用网络上的其他客户端,您应该会在客户端主窗口中看到额外的一行。只需单击此行即可开始显示。

使用其他产品(如 VLC、SMplayer 等)也可以使用 eXport-it 客户端上显示的“UDP”URL 来显示视频或收听通过多播频道分发的音乐。

停止多播频道

停止多播通道的好方法是在您启动它的客户端上停止它,因为该通道在那里受到控制。 播放到流媒体文件的结尾也应该结束节目。

实际考虑

要启动多播通道需要此应用程序的特定客户端部分,与我的其他最新产品的 eXport-it 客户端相同。 要使用正在运行的多播通道,可以通过应用程序客户端或其他产品(如 VLC、SMPlayer 等)在其他平台或 Android 上运行。 使用 VLC 时,使用多播频道的 URL 与 udp://@239.255.147.111:27192 等不同...只是多了一个“@”。 使用 UDP 多播通道,媒体数据只发送一次以在多个客户端上显示,但没有真正的同步,延迟可能是几秒,具体取决于缓冲和设备特性。

可以使用其他产品收听音频多播频道,但特定客户端显示的图像也通过 IP 多播发送。如果你想随音乐一起发送特定的照片,你可以使用服务器上的“第2页”菜单选项,只选择你想要的图像,一键取消选择所有图像,然后选择你想要的……

每种协议都有优点和不便之处。 UPnP 和多播通道只能在本地网络(主要是 Wi-Fi)上使用,HTTP 流在本地工作,但也可以在 Internet 上使用,并使用 Web 浏览器作为客户端。 UPnP 和组播通道没有安全的方式来控制访问,任何连接到 Wi-Fi 网络的设备都可以使用正在运行的服务器。 使用 HTTP 协议,您可以定义用户名和密码,并在访问类别(组)中设置文件,限制特定用户对某些媒体文件的访问。服务器的设置允许限制分发哪些文件并在需要时为每个文件设置一个类别名称。

back