关于MediaRecorder录像怎么旋转

关于MediaRecorder录像怎么旋转,第1张

参考复制代码代码如下:复制代码代码如下:packagecomandroidxiongvideotest;importjavaioFile;importandroidappActivity;importandroidhardwareCamera;importandroidmediaMediaRecorder;importandroidosBundle;importandroidosEnvironment;importandroidviewMenu;importandroidviewSurfaceHolder;importandroidviewSurfaceView;importandroidviewView;importandroidviewViewOnClickListener;importandroidwidgetButton;importandroidwidgetToast;publicclassMainActivityextendsActivityimplementsOnClickListener{Buttonrecord,stop;//系统视频文件FileviodFile;MediaRecordermRecorder;//显示视频的SurfaceViewSurfaceViewsView;//记录是否正在进行录制booleanisRecording=false;Cameracamera;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){superonCreate(savedInstanceState);setContentView(Rlayoutactivity_main);record=(Button)findViewById(Ridrecord);stop=(Button)findViewById(Ridstop);sView=(SurfaceView)findViewById(RiddView);//stop按钮不可用stopsetEnabled(false);//设置Surface不需要维护自己的缓冲区sViewgetHolder()setType(SurfaceHolderSURFACE_TYPE_PUSH_BUFFERS);//设置分辨率sViewgetHolder()setFixedSize(320,280);//设置该组件不会让屏幕自动关闭sViewgetHolder()setKeepScreenOn(true);recordsetOnClickListener(this);stopsetOnClickListener(this);}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresentgetMenuInflater()inflate(Rmenumain,menu);returntrue;}@OverridepublicvoidonClick(Viewv){switch(vgetId()){caseRidrecord:if(!EnvironmentgetExternalStorageState()equals(EnvironmentMEDIA_MOUNTED)){ToastmakeText(this,"SD卡不存在,请插卡!",ToastLENGTH_SHORT)show();return;}try{//创建MediaPlayer对象mRecorder=newMediaRecorder();mRecorderreset();/camera=Cameraopen();cameraunlock();camerasetDisplayOrientation(0);mRecordersetCamera(camera);///创建保存录制视频的视频文件viodFile=newFile(EnvironmentgetExternalStorageDirectory()getCanonicalFile()+"/myvideomp4");if(!viodFileexists())viodFilecreateNewFile();//设置从麦克风采集声音mRecordersetAudioSource(MediaRecorderAudioSourceMIC);//设置从摄像头采集图像mRecordersetVideoSource(MediaRecorderVideoSourceCAMERA);//设置视频、音频的输出格式mRecordersetOutputFormat(MediaRecorderOutputFormatDEFAULT);//设置音频的编码格式、mRecordersetAudioEncoder(MediaRecorderAudioEncoderDEFAULT);//设置图像编码格式mRecordersetVideoEncoder(MediaRecorderVideoEncoderDEFAULT);mRecordersetOrientationHint(90);//mRecordersetVideoSize(320,280);//mRecordersetVideoFrameRate(5);mRecordersetOutputFile(viodFilegetAbsolutePath());//指定SurfaceView来预览视频mRecordersetPreviewDisplay(sViewgetHolder()getSurface());mRecorderprepare();//开始录制mRecorderstart();//让record按钮不可用recordsetEnabled(false);//让stop按钮可用stopsetEnabled(true);isRecording=true;}catch(Exceptione){eprintStackTrace();}break;caseRidstop://如果正在录制if(isRecording){//停止录制mRecorderstop();//释放资源mRecorderrelease();mRecorder=null;//让record按钮可用recordsetEnabled(true);//让stop按钮不可用stopsetEnabled(false);}break;default:break;}}}

<rotate 
        android:fromDegrees="45"  //起始旋转的角度
        android:toDegrees="89"    //结束选装后的角度
        android:duration="500"    //执行时间为500ms
        android:pivotX="50%"      //距离控件左边缘50%
        android:pivotY="50%"      //距离控件上边缘50%(与上边结合就是控件中心)
        android:fillEnabled="true"    
        android:fillAfter="true"  //动画执行完后停留在执行完的状态
        />

—————————————————————————————————————————

当然也可以通过代码用animation实现

好久没写,应该是

RotateAnimation animation =new RotateAnimation(0f,45f,AnimationRELATIVE_TO_SELF, 
05f,AnimationRELATIVE_TO_SELF,05f); 
animationsetDuration(500);
viewsetAnimation(animation);

屏幕旋转需要在AndroidManifestxml的的Activity配置中加入android:screenOrientation=”landscape” 属性。

参数说明:

landscape = 横向

portrait = 纵向

避免在转屏时重启Activity

android中每次屏幕方向切换时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次 Create的时候载入配置,那样,进行中的游戏就不会自动重启了。

要避免在转屏时重启Activity,可以通过在AndroidManifestxml文件中重新定义方向(给每个Activity加上 android:configChanges=”keyboardHidden|orientation”属性)。

在需要控制屏幕显示方向的Activity中重写 onConfigurationChanged(Configuration newConfig)方法。

强制屏幕旋转
浏览网页你会不会觉得手机屏幕宽度不够,看许多大的网页看不完整,缩小后字体小的看不清,很不爽很不爽。有时我们又觉得躺床上看书看视频什么的不能横过来看,很不爽很不爽。可是这个应用又不支持横屏!这可怎么办?强制屏幕旋转这款应用正好可以解决你的问题,将你手机的整个屏幕以任意角度翻转,经过一定的调整,你就能以很舒服的姿态看网页或者读物了,让手机观看更舒适。
快速
导航
软件截图
软件信息
强制屏幕旋转 V14
下载:497次
大小:159KB
时间:2012-04-24
类别:系统工具
语言:英语
系统:Android 16+
软件截图
强制屏幕旋转

亲,建议您检查一下手机UC浏览器的设置中,更多设置>屏幕旋转,是否设置为跟随系统,此处如果想刷视频也一直是竖屏,可改为锁定竖屏。同时,手机自带设置里面“屏幕旋转”建议关闭此功能即可。

截图如下:

一、UC浏览器的屏幕设置:

旋转屏幕设置

二、手机上的屏幕设置:

屏幕旋转开关

温馨提示:不同手机的“屏幕旋转”按键 *** 作路径会有所不同,以手机说明书 *** 作路径为准!

/
旋转

@param src目标文件
@param des源文件
@param width
@param height
/
public static void rotateYUV240SP(byte[] src, byte[] des, int width,
int height) {
int wh = width height;
// 旋转Y
int k = 0;
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
des[k] = src[width j + i];
k++;
}
}
for (int i = 0; i < width; i += 2) {
for (int j = 0; j < height / 2; j++) {
des[k] = src[wh + width j + i];
des[k + 1] = src[wh + width j + i + 1];
k += 2;
}
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13388180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存