在 Titanium 中,如何从 android 中的视频中获取缩略图?
in Titanium, how to take a thumbnail from video in android?
当我从图库中选择视频或捕获视频时,我正在尝试从我设置 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.
看来您目前无法执行此操作:它已损坏。这是该问题的 Jira 票证:
Android: Get image frames at times out of local video
表示在6.1.0中修复了。显然现在您可以使用远程视频来完成此操作,因此如果这适合您的工作流程,您也许可以完成它。
这是否回答了您的问题?
当我从图库中选择视频或捕获视频时,我正在尝试从我设置 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.
看来您目前无法执行此操作:它已损坏。这是该问题的 Jira 票证: Android: Get image frames at times out of local video
表示在6.1.0中修复了。显然现在您可以使用远程视频来完成此操作,因此如果这适合您的工作流程,您也许可以完成它。
这是否回答了您的问题?