关于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开发经验,后续还会更新