美文网首页
android 预研Surfaceview镜像 翻转

android 预研Surfaceview镜像 翻转

作者: 月影路西法 | 来源:发表于2023-04-16 11:39 被阅读0次

关于SurfaceView镜像翻转查找到的帖子如下

https://blog.csdn.net/chezabo6116/article/details/124471089

【Android】android镜像翻转

https://developer.aliyun.com/article/53286?spm=a2c6h.14164896.0.0.60a713cd6OTeqD

尝试结果 1.翻转动画,对于视频surfaces没有效果 2.重写控件,因为方法中涉及绘制,surface绘制不在android这边绘制方法pass 3.SurfaceView翻转 重写canvas,结果为翻转的地方界面白屏,不在显示影像 4.手势翻转 不是涉及surfaceview直接pass 5.setScaleY(-1); 结果为界面黑屏

https://www.jianshu.com/p/5085585554f7

只是view的翻转,方案pass

五种方案实现视频镜像

https://blog.csdn.net/u011686167/article/details/108250516

尝试结果 1.setRotationY

确定界面镜像了,但是surface黑屏 2.带翻转动画的ObjectAnimator

效果同上 3.利用Matrix的setScale

设置后surface没有效果 4.渲染层

android不涉及绘制 api无法调用到pass 5.解码层

android不涉及解码 api无法调用到pass

Android-控制Camera2相关参数 https://download.csdn.net/download/weixin_39840924/11534813

尝试结果 通过api修改camera2 参数,不适用于surfaceview绘制

https://download.csdn.net/download/frandy/12141830?utm_medium=distribute.pc_aggpage_search_result.none-task-download-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-12141830.pc_agg_new_rank&utm_term=Camera%E7%B1%BB+camera+%E8%AE%BE%E7%BD%AE%E9%95%9C%E5%83%8F&spm=1000.2123.3001.4430 android camera mirror 使用SurfaceView自定义相机视频实现预览时左右镜像,实现镜子效果

csdn项目 积分不够

视频镜像问题 https://stackoverflow.com/questions/47197703/how-to-make-video-captured-by-front-camera-not-being-inverse-android/47249032#47249032

回答中没有提供相应的api,建议使用MediaCodec这样就有需要操作裸数据

Android前置摄像头镜像翻转 https://www.cnblogs.com/hh8888-log/p/10560045.html

通过api获取摄像头的裸数据,不适用于直接镜像翻转方案

Android实现本地图片、视频左右镜像翻转https://www.csdn.net/tags/Mtzagg4sMjcwNDEtYmxvZwO0O0OO0O0O.html

帖子已不存在

onPreviewFrame https://blog.csdn.net/weixin_37391237/article/details/109628684

针对摄像头的方法,api无法调用到,不适用pass

android camera yuv帧水平翻转 https://blog.csdn.net/JKjiang123/article/details/78782732?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3

使用代码操作裸数据翻转,不适用pass

Android编程中调用Camera时预览画面有旋转问题的解决方法 https://download.csdn.net/download/weixin_38621386/12802179?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-download-2defaultCTRLISTPaid-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-download-2defaultCTRLISTPaid-1.pc_relevant_default&utm_relevant_index=1

CSDN DEMO积分不够

https://www.pianshen.com/question/27431952767/

上面方法已经使用过,绘制画布,结果图像为白色

https://blog.csdn.net/mbrose/article/details/80167781

使用相机的预览帧Camera.previewCallback

通过以上帖子

android 可以调用的api如下

使用view的方法

view.setRotationY (180);

view.setsetScaleY(180);

使用动画

Animator animator = ObjectAnimator.ofFloat(mView, "rotationY", 180);

animator.setDuration(500).start();

使用Matrix

Matrix matrix = textureView.getMatrix();

matrix.setScale(-1, 1, textureView.getWidth()/2, 0);

textureView.setTransform(matrix);

使用画布与画笔

.drawBitmap(bmp, null, rect, m_paint);

使用相机的预览帧

Camera.previewCallback

方法 SurfaceView TextureView
view.setRotationY (180); 无效果 镜像翻转
view.setsetScaleY(-1); 无效果 镜像翻转
Animator 有动画效果,无镜像翻转 有动画效果,动画后镜像翻转
Matrix 无法获取Matrix对象无法使用 镜像翻转
drawBitmap 界面变成白色,画布上绘制的文字镜像 无法获取SurfaceHoder的lockCanvas方法
Camera.previewCallback 与项目实际使用不符未尝试 与项目实际使用不符未尝试

视频显示分为surfaceview与TextureView,GlSurfaceView
目前得出结论
如果视频是使用TexrureView,可以使用VIew的方法对视频进行镜像才做
但是如果使用SurfaceView,无法对视频进行镜像操作

通过看这个帖子发现,https://zhuanlan.zhihu.com/p/35192609
如果要在Java层要实现镜像,还可以通过GLSurface来实现。
不过要实现这个,需要有一定的openGL开发经验,后续还会更新

相关文章

网友评论

      本文标题:android 预研Surfaceview镜像 翻转

      本文链接:https://www.haomeiwen.com/subject/aloaddtx.html