我是 .NET MAUI 和 iOS/Mac 的新手。我正在 .NET MAUI 中制作跨平台应用程序,需要显示来自 RTSP 的视频。我正在使用 CommunityToolkit 中最近可用(2023 年 1 月)的 MediaElement 组件,即 CommunityToolkit.Maui.MediaElement。我只是像这样提供一个 URI:
v.Source = CommunityToolkit.Maui.Views.MediaSource.FromUri($"rtsp://{i.IPAddress}:{i.Port}/")
为了方便起见,我们假设我正在尝试查看以下内容(在撰写本文时,这是一个将显示视频的活动流,例如,通过 Android):
rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4
具有以下编解码器:H264 - MPEG-4 AVC(第 10 部分)(h264),因此我认为它应该适用于 iOS。我正在使用运行 iOS 版本 16.2 的 iOS 模拟器,即。 “iPad Pro(11 英寸)(第 4 代)iOS 16.2”
using CommunityToolkit.Maui;
using Microsoft.Extensions.Logging;
namespace RtspExample;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkitMediaElement()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
return builder.Build();
}
}
<toolkit:MediaElement
Source="rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4"
ShouldAutoPlay="True"
WidthRequest="400"
HeightRequest="300"
/>
4a) 同时将此添加到 MainPage.xaml 中的 ContentPage 属性中:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
关于 MediaElement UI 控件的结果是一个控件,它有一个非活动播放按钮图形,位于控件的中心,有一条线穿过它,表示无法播放媒体。单击图像没有任何效果。此外,我观察到的日志中没有任何相关的错误/消息。此代码适用于 Android 和 Windows(假设您有正确的编解码器)。
基于对各种网络资源的审查,我得出了初步结论,即 Apple 没有提供通过 AVPlayer 访问 RTSP 的方法,而是更喜欢(?)您通过 HLS 访问视频流。
是否有可能在 iOS 中通过 CommunityToolkit.Maui.MediaElement 访问和查看 RTSP?
如果是,请提供一些指导,例如,为什么我上面所做的不起作用,我应该怎么做才能让它起作用?
如果不能,它可以工作吗?如何工作?
是否有替代方案(我正在探索使用非命令行 ffmpeg 包装器的可能替代方案)?