在Delphi 10.3平台上从Android设备上检索视频的缩略图,可以通过使用Android API来实现。以下是实现这一功能的基础概念、优势、类型、应用场景以及解决方案。
以下是一个简单的Delphi代码示例,展示如何使用Android API从Android设备上检索视频的缩略图。
uses
Androidapi.JNI.JavaTypes,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.Media,
Androidapi.IOUtils,
System.SysUtils,
System.Classes;
procedure GetVideoThumbnail(const VideoPath: string; ThumbnailPath: string);
var
resolver: JContentResolver;
uri: Jnet_Uri;
cursor: JCursor;
columnIndex: Integer;
thumbnail: TJBitmap;
begin
resolver := TJContentResolver.Create(nil);
uri := TJnet_Uri.Parse(TJIntent.JavaClass.ACTION_MEDIA_CONTENT).CallMethod('parse', [TJString.Create('content://media/external/videos/media')], []);
cursor := resolver.CallMethod('query', [uri, nil, nil, nil, nil], [TJCursor.Class]);
try
if cursor.MoveToFirst then
begin
columnIndex := cursor.GetColumnIndex(TJMediaStore_MediaColumns.DATA);
while not cursor.IsAfterLast do
begin
if cursor.GetString(columnIndex) = VideoPath then
begin
thumbnail := TJBitmap.Create nil;
resolver.CallMethod('openInputStream', [uri], [TJInputStream.Class]).CallMethod('read', [], [TJInputStream.JavaClass.READ_BLOCKING]);
thumbnail.Recycle;
TJBitmap.Compress(thumbnail, TJBitmap.CompressFormat.PNG, ThumbnailPath, 100);
Break;
end;
cursor.MoveToNext;
end;
end;
finally
cursor.Free;
resolver.Free;
end;
end;
通过以上步骤和代码示例,你可以在Delphi 10.3平台上从Android设备上检索视频的缩略图。
领取专属 10元无门槛券
手把手带您无忧上云