我使用MetadataRetriever从视频中提取帧,并将所有图像存储在一个ArrayList<Bitmap>
.我想将它们全部存储在SD卡上(仅用于测试目的).
但是当我从模拟器中取出一个文件夹并查看保存的图像时,所有图像都只是视频的第一帧.
这就是我从视频中提取帧的方法:
File videoFile=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/videos","sample_mpeg4.mp4");
Uri videoFileUri=Uri.parse(videoFile.toString());
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(videoFile.getAbsolutePath());
ArrayList<Bitmap> rev=new ArrayList<Bitmap>();
//Create a new Media Player
MediaPlayer mp = MediaPlayer.create(getBaseContext(), videoFileUri);
int millis = mp.getDuration();
for(int i=0;i<millis;i+=100){
Bitmap bitmap=retriever.getFrameAtTime(i,OPTION_CLOSEST_SYNC);
rev.add(bitmap);
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何保存它们(我正在调用此方法并传递位图ArrayList):
public void saveFrames(ArrayList<Bitmap> saveBitmapList) throws IOException{
Random r = new Random();
int folder_id = r.nextInt(1000) + 1;
String folder = Environment.getExternalStorageDirectory()+"/videos/frames/"+folder_id+"/";
File saveFolder=new File(folder);
if(!saveFolder.exists()){
saveFolder.mkdirs();
}
int i=1;
for (Bitmap b : saveBitmapList){
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.JPEG, …
Run Code Online (Sandbox Code Playgroud) 我没有视频帧ArrayList<Bitmap>
.我MediaMetadataRetriever.getFrameAtTime()
在视频文件(.mp4)上使用方法访问了这些帧.
我颠倒了ArrayList中帧的顺序.现在使用这个反向排序的帧队列,我想渲染一个视频,因此它将被反转(我希望我在正确的轨道上).
创建该视频后,我还想将其保存到SD卡.
怎么实现这个?或者是否有任何其他方法来反转java中的视频?
编辑1: (***使用xuggler*)**
我尝试使用xuggler ...我尝试使用它的.jar文件.但它正在抛出一些错误.
[2012-08-18 00:29:16 - xugglertest2] The library 'xuggle-xuggler-5.2.jar' contains native libraries that will not run on the device.
[2012-08-18 00:29:16 - xugglertest2] The following libraries were found:
[2012-08-18 00:29:16 - xugglertest2] - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-ferry.so
[2012-08-18 00:29:16 - xugglertest2] - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-xuggler-io.so
[2012-08-18 00:29:16 - xugglertest2] - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-xuggler.so
[2012-08-18 00:29:16 - xugglertest2] - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle.so
[2012-08-18 00:29:16 - xugglertest2] - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-ferry.so
[2012-08-18 00:29:16 - xugglertest2] - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-xuggler-io.so
[2012-08-18 00:29:16 - xugglertest2] - …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为android armeabi设备编译ffmpeg.
我正在按照roman10.net的 教程进行操作.
他给出的构建脚本为armv7-a设备构建了ffmpeg.我想为armeabi建造它.
我的最终目标是在android armeabi和armv7-a设备上运行ffmpeg命令.
所以我改变了脚本的CPU部分
#arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one
Run Code Online (Sandbox Code Playgroud)
至
#arm v6
CPU=armv6
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one
Run Code Online (Sandbox Code Playgroud)
(我认为将它更改为armv6将构建与armeabi设备兼容的ffmpeg.我错了吗?)
疑问1:
我是否还需要更换工具链?
即从arm-linux-androideabi-4.4.3到arm-eabi-4.4.0 ?????
疑惑2:
当我尝试运行./build.sh(不更改工具链)时,它会给我以下错误:
/home/chaitanya/android/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc is unable to create an executable file.
C compiler test failed.
If you think configure made a mistake,.. blaah blahh blaah
Run Code Online (Sandbox Code Playgroud)
之后我收到很多警告:
'sub_id'已被弃用,许多其他功能已弃用警告.
平台:ubuntu 11.10
ffmpeg版本:0.11.2
NDK:android-ndk-r5b
这是我的构建脚本:
#!/bin/bash
######################################################
# Usage:
# put this script …
Run Code Online (Sandbox Code Playgroud) 我正在使用ubuntu 12.04
我试图将我的默认apache2端口从80改为8085
我编辑了/etc/apache2/ports.conf
我编辑了"Listen 80"行到"Listen 8085"
然后重新启动我的apache
然后在我放的浏览器中测试这个
netstat -tulpn | grep 8085结果是"404 Not Found"
然后我打开终端并运行
tcp 0 0 0.0.0.0:8085 0.0.0.0:* LISTEN
o/p是:
netstat -tulpn | grep 8085
我做错了什么?
我错过了什么?
谢谢和问候!!
我知道这可能是一些问题的重复.但这些线程的答案并没有帮助我.
我正在尝试使用Bambuser的ffmpeg为android编译ffmpeg库.
我为客户端版本1.3.7下载了Archive到1.6.0.来自bambuser.
我按照REAME中的说明进行操作.
在运行./build.sh时遇到以下错误
arm-linux-androideabi-gcc is unable to create an executable file.
C compiler test failed.
If you think configure made a mistake, make sure you are using the latest
version from SVN. If the latest version fails, report the problem to the
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solving the problem.
Run Code Online (Sandbox Code Playgroud)
这是ffmpeg 的config.log的最后几行
mktemp is /bin/mktemp
check_ld
check_cc …
Run Code Online (Sandbox Code Playgroud) 我有一个图像,我想为它设置一些初始模糊.根据用户的一些动作,我希望图像减少一些量的模糊度.是否有任何jQuery插件可以让你处理模糊半径或类似的东西?
我在这里遇到过一个jQuery API http://www.pixastic.com/lib/docs/actions/blur/ 但我不认为它能够逐渐改变图像的模糊性.
需要帮助,请建议我该怎么办?还有什么我可以使用的吗?Thanx提前.
如果我使用
<div contentEditable="true" name="content"></div>
Run Code Online (Sandbox Code Playgroud)
而不是Textarea的形式我无法提交上面可编辑部门的输入.
我正在使用可编辑的部门,因为我想在输入可编辑部门中运行时添加图像.
那么有没有办法提交可编辑部门的输入?
我使用PHP作为服务器端语言.
我正在开发一个使用mysql
和sequelize
打包的快速4应用程序.Sequelize ORM使用promises从数据库中获取数据.我正在尝试在路由器中获取数据并发送json响应.当我试图链接then
承诺的回调时,res.json
我在控制台说出错Unhandled rejection TypeError: Cannot read property 'get' of undefined
// This works
employeeRouter.get("/:id", function(req, res){
Employee.findById(req.params.id).then(function(data){
res.json(data);
});
});
// Replacing above code with following doesn't work
employeeRouter.get("/:id", function(req, res){
Employee.findById(req.params.id).then(res.json);
});
Run Code Online (Sandbox Code Playgroud)
错误堆栈:
Unhandled rejection TypeError: Cannot read property 'get' of undefined
at json (D:\Workstation\DataPro\CountryStats\node_modules\express\lib\response.js:241:21)
at tryCatcher (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:504:31)
at Promise._settlePromise (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:561:18)
at Promise._settlePromise0 (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:606:10)
at Promise._settlePromises (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:685:18)
at Async._drainQueue (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\async.js:138:16)
at Async._drainQueues (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\async.js:148:10)
at Immediate.Async.drainQueues [as _onImmediate] …
Run Code Online (Sandbox Code Playgroud) 虽然从PHP回显一个表单并从php中的文件中检索到一些预定义的值,但我遇到了麻烦.
我可以在预期的两个输入框中看到这些预定义值,即文章的内容和标题.
但每当我点击提交时,表单的内容部分都没有提交.
当我做print_r($ _ REQUEST); 我只看到以下o/p数组([action] => edit_art [art_id] => 11 $ art_id [title] => TCS [agree] => on)
当我没有为内容输入框(textarea)提供预定义值时,它将被提交,无论我输入什么内容.
我的代码如下
echo '<form action="art_action.php?action=edit_art&art_id=$art_id" method="post"><br />
<p><b>Article Title</b></p>
<input type="text" name="title" **value='.$art_title.'**/><br />
<span id="title_check"></span><br />
<p><b>Content</b></p><br />
<textarea cols="75" rows="20" **value='.$content.'** name="content"></textarea><br />
<span id="content_check"></span>
<div class="content" ><input type="checkbox" name="agree" style="margin-right:10px"/>Agree Terms and Conditions first.<span id="agree_check"></span><br />
<input type="button" onclick="varify_and_post_article(this.form)" Value="Post Article"/><br />
</form>';
Run Code Online (Sandbox Code Playgroud)
请帮帮我.Thanx提前!!
我正在尝试为游戏创建设置,允许用户保存是否需要声音(CheckBox).
当用户取消选中它时,我想禁用所有其他声音.
这就是我正在做的事情
// Create Dialog
final SexyAlertDialog dialog = new SexyAlertDialog(mActivity,R.layout.settings,R.style.SettingDialog,false);
// Find CheckBox
final CheckBox isSoundEnabled = (CheckBox) dialog.findViewById(R.id.isSoundEnabled);
// Check SharedPreferences to get isSoundEnabled value
if(mSettingPreferences.getBoolean("isSoundEnabled", false)){
isSoundEnabled.setChecked(true);
}else{
isSoundEnabled.setChecked(false);
}
// OnCheckedChangeListener on Checkbox in AlertDialog
isSoundEnabled.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
mSettingEditor.putBoolean("isSoundEnabled", true);
mSettingEditor.commit();
// Enable Music and Sound
mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsSound(true);
mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsMusic(true);
Toast.makeText(mActivity, "Audio Enabled", Toast.LENGTH_LONG).show();
}else{
mSettingEditor.putBoolean("isSoundEnabled", false);
mSettingEditor.commit();
// Disable Music and Sound
mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsSound(false);
mActivity.getEngine().getEngineOptions().getAudioOptions().setNeedsMusic(false);
Toast.makeText(mActivity, "Audio Disabled !! …
Run Code Online (Sandbox Code Playgroud) 我需要触发2个查询。目前,我正在这样做:
// Begin Transaction
$this->db->beginTransaction();
// Fire Queries
if($query_one->execute()){
if($query_two->execute()){
// Commit only when both queries executed successfully
$this->db->commit();
}else{
$this->db->rollback();
}
}else{
$this->db->rollback();
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?我在代码中没有使用try..catch,这会使我的代码在任何情况下都不适当或容易受到攻击吗?
android ×5
php ×3
ffmpeg ×2
forms ×2
gcc ×2
html ×2
ubuntu-11.10 ×2
video ×2
andengine ×1
apache ×1
arm ×1
audio ×1
bitmap ×1
bluebird ×1
blurry ×1
commit ×1
express ×1
image ×1
java ×1
jquery ×1
localhost ×1
mysql ×1
node.js ×1
pdo ×1
port ×1
promise ×1
rendering ×1
rollback ×1
save ×1
sequelize.js ×1
submit ×1
textarea ×1
ubuntu ×1
xuggler ×1