Zpět na domů

SkiaCamera: videoefekty a titulky v .NET MAUI

Článek popisuje integraci SkiaCamera do .NET MAUI pro zpracování videa v reálném čase: AI-titulky, SKSL-šeadry, přednahrávání a překryvy. Rozbor instalace, callbacků ProcessFrame/Preview a nastavení UI. Příklad kódu pro foto/video s zrychlením GPU.

AI-titulky a shadery pro video v .NET MAUI SkiaCamera
Advertisement 728x90

Zpracování videa v reálném čase a AI titulky v .NET MAUI pomocí SkiaCamera

SkiaCamera umožňuje zachytávat fotografie a video z kamery na mobilních zařízeních, aplikovat efekty, překryvy a AI titulky v reálném čase. Každý snímek prochází přes Skia plátno před kódováním, což zajišťuje integraci zpracovaných dat do výsledného MP4 bez dodatečného zpracování. Pro začátek nainstalujte balíček DrawnUi.Maui.Camera a inicializujte DrawnUI v MauiProgram.cs pomocí builder.UseDrawnUi().

Umístěte komponentu uvnitř draw:Canvas s RenderingMode="Accelerated":

<Grid VerticalOptions="Fill" HorizontalOptions="Fill">
    <draw:Canvas RenderingMode="Accelerated" Gestures="Lock">
        <camera:SkiaCamera x:Name="Camera" CaptureMode="Video" />
    </draw:Canvas>
</Grid>

Zafixujte kontejner na Fill, abyste předešli artefaktům. Pro správnou orientaci videa zablokujte aplikaci v portrétním režimu: na Androidu pomocí ScreenOrientation.SensorPortrait v MainActivity.cs, na iOS – nastavením UISupportedInterfaceOrientations v Info.plist.

Google AdInline article slot

Zadejte oprávnění:

Camera.NeedPermissionsSet = NeedPermissions.Camera | NeedPermissions.Gallery | NeedPermissions.Microphone;

Zapněte kameru po prvním vykreslení plátna nebo podle navigačních událostí.

Řízení kamery a zpracování snímků

Vlastnost IsOn řídí spuštění/zastavení. Při přechodu do pozadí se kamera automaticky pozastaví. Náhled se vykresluje přes SkiaImage ve vlastnosti Display, dostupné pro rozostření nebo efekty.

Google AdInline article slot

Povolte zpracování v reálném čase:

UseRealtimeVideoProcessing = true;
ProcessFrame = OnFrameProcessing;
ProcessPreview = OnFrameProcessing;

Zpracovatelé přijímají DrawableFrame s SKCanvas, SKImage, Scale a příznakem IsPreview. Při nahrávání náhled zobrazuje zpracovaný snímek zmenšené velikosti – princip WYSIWYG.

Příklad vlastního kontroleru AppCamera:

Google AdInline article slot
public partial class AppCamera : SkiaCamera
{
    public AppCamera()
    {
        NeedPermissionsSet = NeedPermissions.Camera | NeedPermissions.Gallery | NeedPermissions.Microphone;
        InjectGpsLocation = true;
        UseRealtimeVideoProcessing = true;
        VideoQuality = VideoQuality.Standard;
        EnableAudioRecording = true;
        ProcessFrame = OnFrameProcessing;
        ProcessPreview = OnFrameProcessing;
    }
}

Nahrávání videa s předzáznamem

Spuštění nahrávání:

if (CameraControl.IsRecording)
    await CameraControl.StopVideoRecording();
else
    await CameraControl.StartVideoRecording();

Přenos do galerie po dokončení:

private async void OnVideoRecordingSuccess(object sender, CapturedVideo capturedVideo)
{
    var publicPath = await CameraControl.MoveVideoToGalleryAsync(capturedVideo, MauiProgram.Album);
}

Předzáznam využívá kruhový buffer v paměti pro zachycení 3–10 sekund před stisknutím REC:

CameraControl.EnablePreRecording = true;
CameraControl.PreRecordDuration = TimeSpan.FromSeconds(5);

Vlastnosti IsPreRecording a IsRecording jsou bindable pro UI. Zrušení vymaže buffer: StopVideoRecording(true).

Užitečné pro scénáře s nepředvídatelným začátkem: sport, wildlife, bezpečnostní kamery s detekcí pohybu.

SKSL shadery pro video efekty

Aplikujte filtry na náhled, fotografie a video přes SKSL shadery. Přepište RenderPreviewForProcessing a RenderFrameForRecording:

CameraControl.VideoEffect = ShaderEffect.Movie;

Shadery se vykreslují na SKPaint před kódováním, efekt je fixován v MP4. UI příklad obsahuje přepínač filtrů: Noir, Movie a další.

AI titulky a audio vizualizace

Generování titulků na bázi OpenAI se integruje v reálném čase a vkládá do videa. Audio vizualizér (EQ) se překrývá jako overlay, reaguje na otočení zařízení přes RotationChanged.

Sekce nastavení:

  • Input: výběr kamery, formát, režim.
  • Processing: audio monitoring, titulky, shadery.
  • Output: audio/video, předzáznam, kvalita.

UI otáčí ikony tlačítek nezávisle na fixaci obrazovky.

Co je důležité

  • SkiaCamera zpracovává snímky na GPU přes Skia plátno, zajišťuje efekty v reálném čase ve výsledném videu.
  • Předzáznam s kruhovým bufferem zachytává události před spouštěčem bez trvalého ukládání na disk.
  • SKSL shadery se aplikují na náhled a nahrávání bez dodatečného zpracování; callbacky ProcessFrame/Preview rozlišují režimy.
  • AI titulky od OpenAI a EQ overlaye se vkládají do MP4; UI se přizpůsobuje orientaci.
  • Automatická pauza v pozadí, bindable vlastnosti pro nahrávání/předzáznam.

— Editorial Team

Advertisement 728x90

Číst dál