gpt4 book ai didi

android - Xamarin 多平台 - 来自 jpeg 序列的视频

转载 作者:行者123 更新时间:2023-11-29 00:26:13 24 4
gpt4 key购买 nike

我想知道如何在 Xamarin(所有平台)中显示来自 jpeg 的视频。

我的 jpeg 是从流行的视频监控管理软件发送的 http 客户端流中流式传输的。

我的 jpeg 格式为 byte[],我得到大约 10 jpegs/second。这种格式是强加的。

我尝试快速更改Image 上的Source,但这会导致在Android 上出现严重的闪烁。这似乎适用于 Windows Phone,但性能不是很好。

如何为每个视频创建一个视频播放器?除非我记错了,否则现有组件无法执行此操作。

最好的,

最佳答案

谢谢杰森!效果很好,渲染非常流畅!!

只需使用 NuGet 将 SkiaSharp.Views.Forms 添加到项目即可!

代码如下(共享项目):

// Content page initialization
private void InitUI() {

Title = "Xamavideo";

var button = new Button
{
Text = "Connect!"
};
Label label = new Label
{
Text = ""
};

var scroll = new ScrollView();
scroll.BackgroundColor = Color.Black;
Content = scroll;
var stack = new StackLayout
{
Padding = 40,
Spacing = 10
};

//Add a SKCanvasView item to the stack
var videoCanvas = new SKCanvasView
{
HeightRequest = 400,
WidthRequest = 600,
};
videoCanvas.PaintSurface += OnCanvasViewPaintSurface;
stack.Children.Add(videoCanvas);
}

//Create the event handler
void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args)
{
SKImageInfo info = args.Info;
SKSurface surface = args.Surface;

// using (var stream = new SKManagedStream(fileStream))
if (lastFrame == null) return;
using (var canvas = surface.Canvas)
// use KBitmap.Decode to decode the byte[] in jpeg format
using (var bitmap = SKBitmap.Decode(lastFrame))
using (var paint = new SKPaint())
{
// clear the canvas / fill with black
canvas.DrawColor(SKColors.Black);
canvas.DrawBitmap(bitmap, SKRect.Create(640, 480), paint);
}
}

void UpdateFrame(VideoClient client){

//Use this to update the canvas:
byte[] lastFrame = client.imageBytes;
videoCanvas.InvalidateSurface();
}

关于android - Xamarin 多平台 - 来自 jpeg 序列的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42930776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com