android - 在Titanium中,如何从android中的视频中获取缩略图?

标签 android titanium appcelerator titanium-mobile titanium-android

我试图从视频播放器获取缩略图,当我从图库中选择视频或捕获视频时,我设置了 Url,所以这是我在 Controller 中的代码:-

var intent = Titanium.Android.createIntent({
    action: Ti.Android.ACTION_PICK,
    type : "video/*"
});
intent.addCategory(Ti.Android.CATEGORY_DEFAULT);
var curActivity =  $.createPost.getActivity();

curActivity.startActivityForResult(intent, function(event) {
    if (event.resultCode == Ti.Android.RESULT_OK) {
        if (event.intent.data != null) {
            // If everything went OK, save a reference to the video URI
            Ti.API.info('here '+ event.intent.data);
            Ti.API.info('video: '+ event.intent);
            var videoPath = event.intent.data;
            video = Ti.Filesystem.getFile(videoPath);

            $[e.source.fileView].setUrl(event.intent.data);
            // $[e.source.fileView].setMedia(file);
            $[e.source.fileView].setVisible(true);
            $[e.source.removeBtn].setVisible(true);

            $.video.requestThumbnailImagesAtTimes([0,1,2,6,12], Titanium.Media.VIDEO_TIME_OPTION_NEAREST_KEYFRAME, function (response) {
                alert('text');
                Ti.API.info("Thumbnail callback called, success = " + response.success);
                Ti.API.info("Thumbnail callback called, time = " + response.time);
                Ti.API.info("Thumbnail callback called, code = " + response.code);
                if(response.success) {
                    videoThumb = response.image;
                }
            });
        }
        else {
            Ti.API.error('Could not retrieve media URL!');
        }
    }
    else if (event.resultCode == Ti.Android.RESULT_CANCELED) {
        Ti.API.trace('User cancelled video capture session.');
    }
    else {
        Ti.API.error('Could not record video!');
    }
});

我获取了视频,它出现在视频播放器 ($.video) 中,但我根本无法获取缩略图。 这段代码在 IOS 中运行得很好

            $.video.requestThumbnailImagesAtTimes([0,1,2,6,12], Titanium.Media.VIDEO_TIME_OPTION_NEAREST_KEYFRAME, function (response) {
                alert('text');
                Ti.API.info("Thumbnail callback called, success = " + response.success);
                Ti.API.info("Thumbnail callback called, time = " + response.time);
                Ti.API.info("Thumbnail callback called, code = " + response.code);
                if(response.success) {
                    videoThumb = response.image;
                }
            });

但在 Android 中则不然。

最佳答案

看来此时您无法执行此操作:它已损坏。这是该问题的 Jira 票证: Android: Get image frames at times out of local video

这表明它在6.1.0中已修复。显然,现在您可以使用远程视频来完成此操作,因此如果这适合您的工作流程,您也许能够完成它。

这能回答你的问题吗?

关于android - 在Titanium中,如何从android中的视频中获取缩略图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42802219/

相关文章:

android - 广播接收器未收到 USB 权限

ios - 无法在 bundle 中加载 NIB

eclipse - Appcelerator Studio 与 Titanium Studio

android - 钛制安卓设备中的动画 SCSS

titanium - 在 Alloy Controller 之间传递的 Backbone Model 对象具有 null 属性

javascript - 钛加速器 : FileUriExposedException - How to use Content Provider?

iphone - 在 iPhone 上快速开发应用程序的 Monotouch 还是 Titanium?

android - Jetpack Compose 可以用来构建 App Widgets 吗?

android - DDMS 插件不加载 GPX 文件

安卓用户界面 : A gallery viewer that can display full screen when selected