【问题标题】:in Titanium, how to take a thumbnail from video in android?在 Titanium 中,如何从 android 中的视频中获取缩略图?
【发布时间】:2017-08-05 17:55:25
【问题描述】:

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

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 中没有。

【问题讨论】:

  • 我现在也是这样。尝试使用 6.0.X SDK,Android 没有运气。

标签: android titanium appcelerator titanium-mobile titanium-android


【解决方案1】:

目前看来您不能这样做:它已损坏。这是该问题的 Jira 票证: Android: Get image frames at times out of local video

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

这能回答你的问题吗?

【讨论】:

  • 它不适用于我的远程或较新的 SDK。我的解决方案是使用ffmpeg Android Titanium module 并使用命令生成缩略图。这是命令,虽然必须以 Ti 方式完成 ffmpeg -i input.flv -ss 00:00:14.435 -vframes 1 out.png
  • 我尝试使用 Titan sdk 6.1.0,它也适用于本地视频文件。 builds.appcelerator.com/#6_1_X
  • 我之前的方法有一些注意事项。您能否通过该链接准确告诉我您正在使用哪个 SDK?这对我不起作用:6.1.0.v20170417190415
猜你喜欢
  • 2019-12-19
  • 1970-01-01
  • 2018-11-29
  • 2011-10-19
  • 2015-11-09
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多