- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 android 中面临一个问题,即从图库中选择视频后压缩视频,因为当我从图库中选择视频并将其转换为 Base64 字符串时,字符串变得太长,就像 3.5mb 的字符串一样。什么可以成为解决这个问题的方法。降低视频效果是可以的。这是代码 fragment 。
Uri selectedVideoUri = data.getData();
String selectedPath = getPath(selectedVideoUri,"Video");
encodedVideo=convertFileToString(selectedPath);
public String convertFileToString(String pathOnSdCard){
String strFile=null;
File file=new File(pathOnSdCard);
try {
byte[] data = FileUtils.readFileToByteArray(file);//Convert any file, image or video into byte array
strFile = Base64.encodeToString(data, Base64.NO_WRAP);//Convert byte array into string
} catch (IOException e) {
e.printStackTrace();
}
try {
File myFile = new File("/sdcard/mysdfile.txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter =
new OutputStreamWriter(fOut);
myOutWriter.append(strFile);
myOutWriter.close();
fOut.close();
Toast.makeText(getBaseContext(),
"Done writing SD 'mysdfile.txt'",
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
return strFile;
} private String getPath(Uri uri,String str) {
String[] projection = { MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION};
Cursor cursor = managedQuery(uri, projection, null, null, null);
cursor.moveToFirst();
String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
// int fileSize = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
// long duration = Time.MILLISECONDS.toSeconds(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)));
//some extra potentially useful data to help with filtering if necessary
//System.out.println("size: " + fileSize);
System.out.println("path: " + filePath);
// System.out.println("duration: " + duration);
return filePath;
}
最佳答案
你可以使用 FFmepg。我通过实现JDK来压缩视频来实现的。您需要下载库文件并运行它。有关详细信息,请参阅 this
并且在Background Task中对视频进行压缩,效率会更高。
class VideoCompressing extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = ProgressDialog.show(Sentinel.this, "", "Compressing, Please Wait...", true);
dialog.setMax(100);
dialog.show();
}
@Override
protected String doInBackground(String... key) {
String newText = key[0];
LoadJNI vk = new LoadJNI();
try {
File sdCardDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "DTP_Video");
try {
if (!sdCardDirectory.exists()) {
sdCardDirectory.mkdirs();
}
dateofpic=currentDateFormat();
String videoDestiPath = "VID_"+dateofpic+".mp4";
File image = new File(sdCardDirectory, videoDestiPath);
afterCompressPath = image.getAbsolutePath();
}
catch (Exception e)
{
e.printStackTrace();
}
String workFolder = getApplicationContext().getFilesDir().getAbsolutePath();
String[] complexCommand = {"ffmpeg","-y" ,"-i",newText,
"-strict","experimental","-s", "460x320","-r","25", "-vcodec", "mpeg4", "-b", "1500k",
"-ab","48000", "-ac", "2", "-ar", "22050", afterCompressPath};
vk.run(complexCommand, workFolder, getApplicationContext());
Log.i("test", "ffmpeg4android finished successfully");
}
catch (Throwable e) {
Log.e("test", "vk run exception.", e);
}
runOnUiThread(new Runnable() {
public void run() {
}
});
return null;
}
关于从图库中选择视频后,Android 压缩视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628206/
这是一个链接:http://lomakincello.net/etu/sehen.php 我正在使用 HTML 和 CSS 创建一个网站。我不熟悉 JavaScript,所以有人帮助我制作了一个运行
大家好。我的目标是为自己的新爱好摄影创建一个个人作品集网站。 目前一切就绪。 (这个可以看here。) 问题是,尽我所能,我无法在 CSS 中替换图像。我花了很长时间试图移动图像等,但它只是悲惨地失败
我对画廊有疑问。我无法通过触摸滚动。通过 DPAD 或轨迹球滚动效果很好。 这是一些代码:xml布局: 适配器: package de.goddchen.android.advent.tem
是否有一个社区站点包含一组自定义控件或他们如何调用它为 View ,人们可以在其中获取和重用或发布比标准 UI 组件集更高级的东西? 最佳答案 OpenIntents.org has a bunch
我看了很多论坛,也试过很多东西,就是无法添加PS图库我在公司代理后面,但我已经设置了我的个人资料来使用它。我正在尝试使用这些命令注册 PS 存储库 [Net.ServicePointManager]:
我目前正在尝试在现有的 C++ 项目中使用 boost 图形库。我想将自定义类的对象存储在 boost 图中。下面是一个小示例,其中包含具有两个成员(一个字符串和一个整数)的自定义类定义及其相应的 g
需要从路径获取图像。我已经尝试了所有方法,但似乎没有得到图像。 我的两个图片路径: /storage/emulated/0/DCIM/Camera/20161025_081413.jpg conten
我正在使用 Turbolinks 开发 Android 和 iOS 网络应用程序。 我正在尝试使用 native View /进程实现拍摄新照片或从图库中选择一张照片。 我的表单中有这一行 当我通过
我正在尝试实现诸如适用于 Android 的 Airbnb 应用程序的效果,列出每行中水平滚动画廊的位置(并且每行都有带标题的顶层)。我在每个单元格中使用带有 FrameLayout 和 ViewPa
好吧,我是编码初学者。我下载了 Galereya Jquery 脚本。它有效,但它与代码中它下面的所有其他内容重叠。我尝试更改溢出和位置,但似乎没有任何效果。当我将它添加到另一个 div 中时,网格停
这是我在 stackoverflow 上的第一篇文章。因此,对于这篇文章中的一些不典型内容,我深表歉意。 我编写了一个带有画廊 slider 的 Django 网站,但我不知道为什么图像太大。看这里:
我正在处理一个网站的图库,它由显示所有图片的缩略图 block 组成以及用于显示特定图像的部分。 这是我用来以实际大小显示缩略图和图像的代码。 问题是:我想不出任何东西来设置打开图像的大小。设
我使用 jquery 制作了一个简单的画廊,但是左右按钮不起作用?? 我使用了 jquery 函数 first().appendTo 和 last().prependTo 请检查下面的链接 Mydem
好的伙计们,请不要杀了我,这是我的第一个问题,我对编程知之甚少:)所以我想用灯箱画廊创建一个简单的网站,你可以看看它here . 所以我无法解决的问题是,当您向下滚动页面时,照片后面没有黑色背景。 我
我正在编写自己的图形库 Graph++ ,我对接口(interface)应该返回什么有疑问。例如,我的 BFS 应该返回什么,我很困惑它是否应该返回按顺序访问的一组 vertices ,或者我应该有
我一直在使用图库控件来显示照片,但在滑动照片时遇到问题。我需要一直滑动才能更改照片,否则它会弹回到上一张照片。 在互联网上查询后,我听说画廊已被弃用。下一个可以与画廊控件执行相同操作的控件是什么? 最
为了上大学,我必须在 android 上开发一个带有面部检测的应用程序。为此,我必须在我的画廊中保存各种照片。问题是保存照片后,图库不会更新。更准确地说,如果我删除了我要保存图像的目录,我打开应用程序
我正在这样使用图库 但是当我运行代码时,我发现画廊从中间开始,我想从左边开始。我该怎么办,请帮助我。 最佳答案 描述有关显示的一般信息的结构,例如其大小、密度和字体缩放。要访问 DisplayMe
我试图让用户从他的设备中选择图像或视频,目前它只显示视频或图像,具体取决于以下代码中首先写入的内容: Intent galleryIntent = new Intent(Intent.ACTION_
我正在创建一个 cover flow通过扩展 Gallery 类来处理图像。 画廊 View 显示正常,但图像从右向左滚动的速度非常快,反之亦然。 有什么方法可以调节图像在水平方向上从右到左移动的速度
我是一名优秀的程序员,十分优秀!