拍照后怎样富文本编辑器上传视频直接上传

查看: 3487|回复: 10
大家拍摄后剪辑出来的片子,如何上传优酷等网络视频
阅读权限60
居住地黑龙江省 哈尔滨市 道外区 靖宇街道
公司自由职业
自我介绍为哈尔滨做一份贡献。梦想成为独立电影人!
主题帖子精华
为哈尔滨做一份贡献。梦想成为独立电影人!
本帖最后由 ChongZ 于
11:27 编辑
输出什么格式,用什么软件转码,还有具体参数
3690.jpg (29.19 KB, 下载次数: 33)
11:27 上传
楼主最近帖子
论坛最新回复
阅读权限30
主题帖子精华
vimeo有个建议转码
阅读权限60
主题帖子精华
本帖最后由 burningstar 于
10:50 编辑
编码:h264或者MPEG4; 码率至少8M; 格式为MOV MP4或者AVI都行~
不过优酷是个RMB玩家的网站,你就算最佳格式最佳码率上传到优酷,得到的一般是“伪超清”画质,都会看到马赛克的痕迹~只有交钱了,才会有”真超清“~
所以建议土豆吧~土豆的原画对分辨率几乎没有影响,就是色彩处理差一些~可以适当降低饱和和对比度再上传!
优酷,只有交钱了,才会有”真超清。请问有这回事吗,他们怎么收费,在哪可咨询&
8MB还是8Mb啊。。。&
你可以试试压缩为720画幅~5m码率~&
我昨天上传3分钟300M的MOV,结果渣的要命&
谢谢,很有用,不过我网速不好,码率高了惆怅,有什么办法&
阅读权限60
主题帖子精华
楼主,想问一下你百诺的独脚架呢&&
阅读权限60
公司广州久视
主题帖子精华
老师们好 发表于
楼主,想问一下你百诺的独脚架呢
看楼主买过,想咨询一下&
阅读权限60
主题帖子精华
burningstar 发表于
编码:h264或者MPEG4; 码率至少8M; 格式为MOV MP4或者AVI都行~
不过优酷是个RMB玩家的网站,你就算最佳格 ...
8MB还是8Mb啊。。。
阅读权限30
主题帖子精华
burningstar 发表于
编码:h264或者MPEG4; 码率至少8M; 格式为MOV MP4或者AVI都行~
不过优酷是个RMB玩家的网站,你就算最佳格 ...
优酷,只有交钱了,才会有”真超清。请问有这回事吗,他们怎么收费,在哪可咨询
那个。。。不就是会员嘛~还能是啥?&
阅读权限60
主题帖子精华
地主 发表于
优酷,只有交钱了,才会有”真超清。请问有这回事吗,他们怎么收费,在哪可咨询
那个。。。不就是会员嘛~还能是啥?
阅读权限60
主题帖子精华
没看到优酷VIP特权有上传“真超清”选项啊
阅读权限60
主题帖子精华
究竟是怎么回事呢&&什么会员啊
的确有的视频会更清 怎么做会员啊
阅读权限30
居住地浙江省 杭州市
主题帖子精华
怎么做会员交钱
Powered byAndroid拍照,上传,预览综合【修改】 - aokunsang - ITeye技术网站
博客分类:
最近需要做手机拍照【两种方式:调用系统相机(博客最后);自己写照相机布局】,预览,上传功能。特地研究了下android的手机拍照。
参考地址:
1、上传文件功能网上很多讲的,只要细心点,按照格式来写发送的数据,都是没有问题的。
2、预览使用Gallery和ImageSwitcher就行,我做的很简单(参考代码)。
----------------------------------------------------------------------------------------------------------------------
修改内容:
1、照相功能使用系统自带照相机(自己写的照相机属性设置根据不同照相机会有问题,所以舍弃)
2、预览功能不再使用Gallery+ImageS实用性不强,并且显示慢且卡。改用异步加载
3、上传图片时,对图片进行压缩,增加上传速度。
4、长按gridView进入编辑模式,批量删除图片。参考;
5、今天又做修改,之前写的压缩图片方法的竟然会变形(没有测试大的图片),修改后不会变形了。
以此,希望能做到最好的用户体验。
附上流程图:
拍照功能:【预览尺寸有知道的朋友留言告知。】
* @author Administrator
public class TakePhotoAct extends Activity implements SurfaceHolder.Callback{
private static String imgPath = Environment.getExternalStorageDirectory().getPath() + "/"+Const.imageD
private SurfaceView surfaceV
//相机画布
private SurfaceHolder surfaceH
private Button takePicView,exitV
private Camera mC
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//这里我在AndroidManifest.xml的activity中添加了android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
* 隐藏状态栏和标题栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
* 获取Button并且设置事件监听
takePicView = (Button)this.findViewById(R.id.takepic);
takePicView.setOnClickListener(TakePicListener);
exitView = (Button)this.findViewById(R.id.exit);
exitView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
surfaceView = (SurfaceView)this.findViewById(R.id.surface_camera);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
checkSoftStage();
//首先检测SD卡是否存在
* 检测手机是否存在SD卡,网络连接是否打开
private void checkSoftStage(){
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//判断是否存在SD卡
String rootPath = Environment.getExternalStorageDirectory().getPath();
//获取SD卡的根目录
File file = new File(imgPath);
if(!file.exists()){
file.mkdir();
new AlertDialog.Builder(this).setMessage("检测到手机没有存储卡!请插入手机存储卡再开启本应用。")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
* 点击拍照按钮,启动拍照
private final OnClickListener TakePicListener = new OnClickListener(){
public void onClick(View v) {
mCamera.autoFocus(new AutoFoucus());
//自动对焦
* 自动对焦后拍照
* @author aokunsang
private final class AutoFoucus implements AutoFocusCallback{
public void onAutoFocus(boolean success, Camera camera) {
if(success && mCamera!=null){
mCamera.takePicture(mShutterCallback, null, mPictureCallback);
* 重点对象、 此处实例化了一个本界面的PictureCallback
* 当用户拍完一张照片的时候触发,这时候对图片处理并保存操作。
private final PictureCallback mPictureCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
String fileName = System.currentTimeMillis()+".jpg";
File file = new File(imgPath,fileName);
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
bm.pressFormat.JPEG, 60, bos);
bos.flush();
bos.close();
Intent intent = new Intent(TakePhotoAct.this,PictureViewAct.class);
intent.putExtra("imagePath", file.getPath());
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
* 在相机快门关闭时候的回调接口,通过这个接口来通知用户快门关闭的事件,
* 普通相机在快门关闭的时候都会发出响声,根据需要可以在该回调接口中定义各种动作, 例如:使设备震动
private final ShutterCallback mShutterCallback = new ShutterCallback() {
public void onShutter() {
Log.d("ShutterCallback", "...onShutter...");
* 初始化相机参数,比如相机的参数: 像素, 大小,格式
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Camera.Parameters param = mCamera.getParameters();
* 设置拍照图片格式
param.setPictureFormat(PixelFormat.JPEG);
* 设置预览尺寸【这里需要注意:预览尺寸有些数字正确,有些会报错,不清楚为啥】
//param.setPreviewSize(320, 240);
* 设置图片大小
param.setPictureSize(Const.width, Const.height);
mCamera.setParameters(param);
* 开始预览
mCamera.startPreview();
* 打开相机,设置预览
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
//打开摄像头
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
mCamera.release();
* 预览界面被关闭时,或者停止相机拍摄;释放相机资源
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
if(mCamera!=null) mCamera.release();
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_CAMERA){
//按下相机实体按键,启动本程序照相功能
mCamera.autoFocus(new AutoFoucus());
//自动对焦
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
&SurfaceView
android:id="@+id/surface_camera"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
&LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"&
android:text="拍照"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/takepic"
android:text="退出"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/exit"
&/LinearLayout&
&/LinearLayout&
预览功能:
* 图片预览
* @author: aokunsang
public class PictureScanAct extends Activity {
private GridView gridV
private ImageAdapter imgA
private List&String& fileNameList = new ArrayList&String&();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picturescan);
gridView = (GridView)findViewById(R.id.picture_grid);
imgAdapter = new ImageAdapter(this);
gridView.setAdapter(imgAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view,
int position, long id) {
String fileName = fileNameList.get(position);
startActivity(new Intent(PictureScanAct.this, PictureViewAct.class).putExtra("flag","upload").putExtra("imagePath",fileName));
//setProgressBarIndeterminateVisibility(true);
Toast.makeText(this, "加载图片中....", Toast.LENGTH_LONG).show();
new AsyncLoadedImage().execute();
* 向适配器添加图片
* @param bitmap
private void addImage(Bitmap... loadImages){
for(Bitmap loadImage:loadImages){
imgAdapter.addPhoto(loadImage);
* 释放内存
protected void onDestroy() {
super.onDestroy();
final GridView grid = gridV
final int count = grid.getChildCount();
ImageView v =
for (int i = 0; i & i++) {
v = (ImageView) grid.getChildAt(i);
((BitmapDrawable) v.getDrawable()).setCallback(null);
* 异步加载图片展示
* @author: aokunsang
class AsyncLoadedImage extends AsyncTask&Object, Bitmap, Boolean& {
protected Boolean doInBackground(Object... params) {
File fileDir = new File(Const.imgPath);
File[] files = fileDir.listFiles();
boolean result =
if(files!=null){
for(File file:files){
String fileName = file.getName();
if (fileName.lastIndexOf(".") & 0
&& fileName.substring(fileName.lastIndexOf(".") + 1,
fileName.length()).equals("jpg")){
Bitmap newB
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 10;
bitmap = BitmapFactory.decodeFile(file.getPath(), options);
newBitmap = ThumbnailUtils.extractThumbnail(bitmap, 100, 100);
bitmap.recycle();
if (newBitmap != null) {
fileNameList.add(file.getPath());
publishProgress(newBitmap);
} catch (Exception e) {
e.printStackTrace();
public void onProgressUpdate(Bitmap... value) {
addImage(value);
protected void onPostExecute(Boolean result) {
if(!result){
showDialog(1);
protected Dialog onCreateDialog(int id) {
AlertDialog dialog = new AlertDialog.Builder(PictureScanAct.this).setTitle("温馨提示").setMessage("暂时还没有照片,请先采集照片!")
.setPositiveButton("确定", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
startActivity(new Intent(PictureScanAct.this,TakePhotoAct.class));
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
GridView适配器:
public class ImageAdapter extends BaseAdapter {
private List&Bitmap& picList = new ArrayList&Bitmap&();
private Context mC
public ImageAdapter(Context mContext){
this.mContext = mC
public int getCount() {
return picList.size();
/* (non-Javadoc)
* @see android.widget.Adapter#getItem(int)
public Object getItem(int position) {
// TODO Auto-generated method stub
return picList.get(position);
* 添加图片
* @param bitmap
public void addPhoto(Bitmap loadImage){
picList.add(loadImage);
notifyDataSetChanged();
/* (non-Javadoc)
* @see android.widget.Adapter#getItemId(int)
public long getItemId(int position) {
// TODO Auto-generated method stub
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView =
if(convertView == null){
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(110, 110));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5,5,5,5);
imageView = (ImageView)convertV
imageView.setImageBitmap(picList.get(position));
return imageV
图片预览界面:
&?xml version="1.0" encoding="utf-8"?&
&GridView xmlns:android="/apk/res/android"
android:id="@+id/picture_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="4"
android:verticalSpacing="5dip"
android:horizontalSpacing="5dip"
android:stretchMode="columnWidth"
android:columnWidth="120dip"
android:gravity="center"
&/GridView&
预览图片:
上传工具类:
import java.io.BufferedR
import java.io.DataOutputS
import java.io.FileInputS
import java.io.InputS
import java.io.InputStreamR
import java.net.HttpURLC
import java.net.URL;
import java.util.M
import java.util.Map.E
import android.util.L
import com.peacemap.photo.po.FileI
* POST上传文件
* @author aokunsang
public class PostFile {
private static PostFile postFile = new PostFile();
private final static String LINEND = "\r\n";
private final static String BOUNDARY = "---------------------------7da"; //数据分隔线
private final static String PREFIX = "--";
private final static String MUTIPART_FORMDATA = "multipart/form-data";
private final static String CHARSET = "utf-8";
private final static String CONTENTTYPE = "application/octet-stream";
private PostFile(){}
public static PostFile getInstance(){
return postF
* HTTP上传文件
* @param actionUrl
请求服务器的路径
* @param params
传递的表单内容
* @param files
多个文件信息
public String post(String actionUrl,Map&String,String& params,FileInfo[] files){
URL url = new URL(actionUrl);
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
urlConn.setDoOutput(true);
//允许输出
urlConn.setDoInput(true);
//允许输入
urlConn.setUseCaches(false);
urlConn.setRequestMethod("POST");
urlConn.setRequestProperty("connection", "Keep-Alive");
urlConn.setRequestProperty("Charset", CHARSET);
urlConn.setRequestProperty("Content-Type", MUTIPART_FORMDATA+";boundary="+BOUNDARY);
DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
//构建表单数据
String entryText = bulidFormText(params);
Log.i("-------描述信息---------------", entryText);
dos.write(entryText.getBytes());
StringBuffer sb = new StringBuffer("");
for(FileInfo file : files){
sb.append(PREFIX).append(BOUNDARY).append(LINEND);
sb.append("Content-Disposition: form- name=\""+file.getFileTextName()+"\"; filename=\""+file.getFile().getAbsolutePath()+"\""+LINEND);
sb.append("Content-Type:"+CONTENTTYPE+";charset="+CHARSET+LINEND);
sb.append(LINEND);
dos.write(sb.toString().getBytes());
InputStream is = new FileInputStream(file.getFile());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
dos.write(buffer, 0, len);
is.close();
dos.write(LINEND.getBytes());
//请求的结束标志
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
dos.write(end_data);
dos.flush();
//-----------------------------------
发送请求数据结束
----------------------------
//----------------------------------
接收返回信息 ------------------------
int code = urlConn.getResponseCode();
if(code!=200){
urlConn.disconnect();
return "";
BufferedReader br = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String result = "";
String line =
while((line = br.readLine())!=null){
br.close();
urlConn.disconnect();
} catch (Exception e) {
Log.e("--------上传图片错误--------", e.getMessage());
* HTTP上传单个文件
* @param actionUrl
请求服务器的路径
* @param params
传递的表单内容
* @param files
单个文件信息
public String post(String actionUrl,Map&String,String& params,FileInfo fileInfo){
return post(actionUrl, params, new FileInfo[]{fileInfo});
* 封装表单文本数据
* @param paramText
private String bulidFormText(Map&String,String& paramText){
if(paramText==null || paramText.isEmpty()) return "";
StringBuffer sb = new StringBuffer("");
for(Entry&String,String& entry : paramText.entrySet()){
sb.append(PREFIX).append(BOUNDARY).append(LINEND);
sb.append("Content-Disposition:form-name=\""
+ entry.getKey() + "\"" + LINEND);
sb.append("Content-Type:text/charset=" + CHARSET + LINEND);
sb.append(LINEND);
sb.append(entry.getValue());
sb.append(LINEND);
return sb.toString();
* 封装文件文本数据
* @param files
private String buildFromFile(FileInfo[] files){
StringBuffer sb = new StringBuffer();
for(FileInfo file : files){
sb.append(PREFIX).append(BOUNDARY).append(LINEND);
sb.append("Content-Disposition: form- name=\""+file.getFileTextName()+"\"; filename=\""+file.getFile().getAbsolutePath()+"\""+LINEND);
sb.append("Content-Type:"+CONTENTTYPE+";charset="+CHARSET+LINEND);
sb.append(LINEND);
return sb.toString();
上传图片时对图片进行压缩处理(压缩处理程序):
* 压缩图片上传
* @param picPath
private synchronized File compressPicture(String picPath){
int maxWidth = 640,maxHeight=480;
//设置新图片的大小
String fileName = picPath.substring(picPath.lastIndexOf("/"));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds =
Bitmap image = BitmapFactory.decodeFile(picPath, options);
double ratio = 1D;
if (maxWidth & 0 && maxHeight &= 0) {
// 限定宽度,高度不做限制
ratio = Math.ceil(options.outWidth / maxWidth);
} else if (maxHeight & 0 && maxWidth &= 0) {
// 限定高度,不限制宽度
ratio = Math.ceil(options.outHeight / maxHeight);
} else if (maxWidth & 0 && maxHeight & 0) {
// 高度和宽度都做了限制,这时候我们计算在这个限制内能容纳的最大的图片尺寸,不会使图片变形
double _widthRatio = Math.ceil(options.outWidth / maxWidth);
double _heightRatio = (double) Math.ceil(options.outHeight / maxHeight);
ratio = _widthRatio & _heightRatio ? _widthRatio : _heightR
if (ratio & 1)
options.inSampleSize = (int)
options.inJustDecodeBounds =
options.inPreferredConfig = Bitmap.Config.RGB_565;
image = BitmapFactory.decodeFile(picPath, options);
//保存入sdCard
File file = new File(Const.thumbnailPath+fileName);
FileOutputStream out = new FileOutputStream(file);
pressFormat.JPEG, 100, out)){
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
return new File(picPath);
if(image!=null && !image.isRecycled()){
image.recycle();
-------------------------------------我是个华丽的分割线,哇哈哈-----------------------------------------------
做完这个拍照后,感觉功能太简单,比如:设置图片大小,白天夜晚照相等等一些系统照相机带的功能都没有,因此用在项目中感觉不炫。 然后就用了简单点的,直接调用系统照相机了。本来想着简单呢,后来也遇到点问题。
(1)根据Camera Activity返回的时候,会带一个名为data的Bitmap对象,照片的缩略图(这个地方可以做各种修改,我没用到不说了),上代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkSoftStage();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE);
} catch (Exception e) {
e.printStackTrace();
* 检测手机是否存在SD卡,网络连接是否打开
private void checkSoftStage(){
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//判断是否存在SD卡
File file = new File(imgPath);
if(!file.exists()){
file.mkdir();
new AlertDialog.Builder(this).setMessage("检测到手机没有存储卡!请插入手机存储卡再开启本应用。")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
protected void onActivityResult(int requestCode, int resultCode, Intent data)
if (resultCode == TAKE_PICTURE)
拍照Activity保存图像数据的key是data,返回的数据类型是Bitmap对象
Bitmap cameraBitmap = (Bitmap) data.getExtras().get("/sdcard/rtest.jpg");
在ImageView组件中显示拍摄的照片
image.setImageBitmap(cameraBitmap);
// 做自己的业务操作。。。。
super.onActivityResult(requestCode, resultCode, data);
(2)以上代码在我的小米手机上测试时,出现问题了。 返回的name为data的Bitmap对象是个Null,我发现小米照完相片之后,他会先跳到一个预览的界面(系统自带的页面),所以得不到Bitmap对象了。
因此我就先保存照片以及其路径,然后在onActivityResult中获取图片,做业务操作,代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkSoftStage();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE);
} catch (Exception e) {
e.printStackTrace();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String fileName = System.currentTimeMillis()+".jpg";
newImgPath = imgPath + "/" + fileN
Uri uri = Uri.fromFile(new File(imgPath,fileName));
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, TAKE_PICTURE);
} catch (Exception e) {
e.printStackTrace();
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {
Log.i("--------图片路径---------", "------"+newImgPath+"---------");
//.....做一些业务操作
} catch (Exception e) {
e.printStackTrace();
super.onActivityResult(requestCode, resultCode, data);
浏览 29961
楼主好人,可否发一份源码亲,不好意思。这个是我在项目中摘出来的部分备忘的,源码逻辑复杂了点,不能外放。
[/** 139.&&&& * 设置预览尺寸【这里需要注意:预览尺寸有些数字正确,有些会报错,不清楚为啥】 140.&&&& */& 141.&&& //param.setPreviewSize(320, 240);& }宽和高可以通过如下方式获取,不知道是不是你想要的那样WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
// 获取屏幕的宽和高
screenWidth = display.getWidth();
screenHeight = display.getHeight();你好,你这是获取屏幕的宽和高,应该跟它没关系。我认为这个预览尺寸是每个手机系统摄像头内置的预览和照相的大小,比如:320*480,600*800等、
你好,博主,我想做一个这样的界面,能否将系统摄像头的照相VIEW进行修改?或者是在那个界面新添加一些东西?系统摄像机貌似不能改动的吧,没有spring那样可以随意扩展吧、兄台可以研究下。当然就算可以,那你也需要针对每个手机进行更改,毕竟照相机这玩意,每个手机绝对是不一样的。
楼主,怎么没有项目附件呢,好人到底啊哎呀,哥哥,这个真没有demo,都是做项目时候自己解决问题后备忘的。项目肯定不能发布出去了。&
以上这些代码组装后,基本上已经可以使用了,根据自己的需要修改下,就行了。又没那么难
& 上一页 1
浏览: 567709 次
来自: 北京
不错,谢谢分享!推荐个参考视频内容:http://www.ro ...
完全正确,补充一下&beans:bean id=&quo ...
longToip直接用ipToLong反过来就好了 publi ...
[size=x-small]jatoolsPrinter还有破 ...

我要回帖

更多关于 富文本编辑器上传视频 的文章

 

随机推荐