大家好,今天小编来为大家解答tiktok镜像功能这个问题,抖音直播镜像在哪里设置很多人还不知道,现在让我们一起来看看吧!
抖音直播镜像在哪里设置
抖音直播镜像开启的步骤如下:
1、打开抖音,点击下方的加号图标。
2、选择开直播的选项,进入直播。
3、点击下方的三个点的图标。
4、选择镜像的图标。
5、在直播时,就可以开启镜像的功能。
抖音引流就是吸引更多的用户来点击、评价、收藏、转发等来访问你的广告链接,为你所发的链接增加访问量。通过抖音这个平台把上面的用户流量引导到自己的其他平台上,可以是微信或者淘宝店铺等。
打造个人IP,做垂直原创视频,靠优质内容获得高曝光、让用户喜欢并关注是最好的抖音引流方式。也只有这样,后期变现才有极大的空间。
昵称本身承担着抖音号的宣传推广任务,一个好的昵称不仅能够有效降低用户的认知成本以及传播成本,还能有效占领用户心智。所以,我们一定不要小看取昵称这件看似简单的小事。抖音的昵称并不是一成不变的,而是允许修改的。不过名字是抖音个人品牌的代表,建议取名字时要慎重,尽量不要随意修改。
怎样在切入切出虚拟摄像头时营造卡顿效果
背景介绍:本人原先是android逆向工程师,后来因为工作变动,离开了协议分析这类的岗位,目前在做直播机与第三方应用兼容性分析相关分析,所以就有了这篇兼容性分析文章。
问题:tiktok在我们推流设备直播时,经过几个特定步骤后切换前后置摄像头会出现卡住的问题。
重现步骤:直播界面打开更多菜单->然后退到后台->回到前台->切换前后置菜单。
现象:直播画面卡住不动了。
解决思路:找到点击切换按钮后的点击事件回调,找到切换摄像头的核心逻辑,来找到卡住原因。
1、如果了解ART虚拟机的同学会知道,jni函数和java函数都会调用到art虚拟机ArtMethod的Invoke函数。

输出日志:
findtargetmethod:android.view.View.performClick
ArtMethodInvoke【22955】:;lr:0x4af78c;libart.so:android.view.View.performClick
ArtMethodInvoke【22955】:;lr:0x2e2800;libart.so:java.lang.Enum.toString
ArtMethodInvoke【22955】:;lr:0x2e2800;libart.so:X.Ggh.LIZ
ArtMethodInvoke【22955】:;lr:0x2e2800;libart.so:java.util.LinkedHashMap.<init>
ArtMethodInvoke【22955】:;lr:0x2e2800;libart.so:java.util.HashMap.putAll
ArtMethodInvoke【22955】:;lr:0x2e2800;libart.so:java.util.HashMap.put
ArtMethodInvoke【22955】:;lr:0x2e2800;libart.so:X.DED.LIZ
ArtMethodInvoke【22955】:;lr:0x2e2800;libart.so:X.D5k.onClick
通过fridahooklibart.so的ArtMethod的Invoke函数,我们找到了点击事件的回调类X.D5k.

找到这个类对应的onClick函数后,我对整个流程做个简单的研读,感觉发现了核心代码在注释直播流处理。

跟着核心代码一路往下找到LiveCore这应该就是直播的核心代码,其实现类为LiveCoreImpl,ILiveStream的实现类为LiveStream。


发现此处只是做了日志信息的合成和应用镜像之类的代码,但是又找到一个核心的类LiveStreamVideoCapture。

追踪到这里发现链路断了,又凑巧通过frida打开tiktok卡死在启动页上,那么接下来使用Xposed继续理流程。
上面的代码虽然没有追中到切换摄像头的核心逻辑,但是我们找到了两个核心逻辑的类LiveStreamVideoCapture和LiveCoreImpl,分别和直播视频流控制直播核心流程控制相关,所以Xposed继续走的时候以这两个类为重点,那么此处就开始放大招了,hook这两个类的所有函数,贴上代码。注意这里使用的classloader是application的classloader。


日志太多了,这里通过shell命令setprop做了个日志控制。



然后找到CameraVideoCapturer类的tryDeliverFrame,这里是处理相机的视频帧,感觉越来越接近真相了,继续hook这个方法,然后发现相机切换卡住以后,这个方法也停止调用了,那么没办法,继续往上找堆栈中run方法的调用调用处。

继续hook。


找到这个类。

至此,熟悉相机开发的同学应该知道,这就是SurfaceTexture.setOnFrameAvailableListener后,相机的可用帧会回调到这个函数,切换相机后卡顿,可用帧也同时不回调。
接下来hook原生相机。



调用的是android.hardware.Camera,也就是camera1相关的api,切换卡顿的时候并没有调用Camera.open函数。


首次开直播的时候调用了这两个函数,点击切换相机的时候并没有调用,在X.HCF这个类里找到switchCamera函数,那么猜测首次开相机,和切换前后相机走的并不是同一个流程,因为这个bug只有在切换相机时才会出现,所以我们就不关注首次开相机的流程。


果然,切换相机的时候走了这个流程,这是又发现了LiveStreamVideoCapture这个核心类,那么简单进去看看SwitchCaptureRunnable这个有没有被创建。


经过测试,发现这个类只会被创建一次,而run方法每次切换都会被调用,而且卡住的情况下也会被调用,那么结合上面Camera.open卡住时没有调用,可以大胆的猜测中间过程某个条件不满足被return了。根据堆栈信息继续往下找几个关键点。


发现CameraVideoCapture里也有切换相机的流程,切一步步往下走,能调用到上面我们hook过的X.HCF的switchCamera,那么我们就看看这里的switchCamera有没有调用吧。
•情况一:先滑动直播界面,再按home键,然后回到tiktok,再切换相机,此时status()函数返回1,走了后续Camera.open流程。


•情况二:先滑动界面,再切换相机,然后按home键,接着回到tiktok,最后切换相机,此时status()函数返回2,没走后续Camera.open流程。

从日志看switchCamera两种情况都走了,再结合switchCamera的源码看,源码里的status()函数的返回值决定了是否继续往下调用切换相机的流程,很遗憾的是,两种情况都出现了,而且都会卡住(为什么两个status值会不一样呢,这里先留个坑,最后来填)。这可把我难住了!
就在这时脑子突然开窍,既然画面卡住,那么必然有错误信息回调,果然一搜索CameraVideoCapture这个核心类有onError函数,毫不犹豫hook它,发现每次出错时,这个函数的错误码都会报-421错误(截图省略-421错误码的测试过程)。


错误信息非常明确的告诉我们是因为相机不支持缩放,导致的打开相机失败,那么至此相机卡住的直接原因找到了,但是还没找到为什么特殊的操作流程后会卡住,而正常的操作不会。于是乎继续跟着堆栈信息往上找。

发现走进了这里的流程,导致的相机进缩放流程,为了验证猜想,我决定在这个函数调用前,把message里的what字段改成2,让它不走这个流程,来看看是不是就不会导致界面卡住,于是就有了下面这段代码。

经过这一番篡改,果真随便怎么折腾,直播界面都不会卡住了。那么我只要找到那里给handler发送的这个message就应该离真想很近了。


然后找这个handler的sendMessage相关切message的what字段赋值为1的函数。

然后我找到了它,这个函数还和缩放相关,那就八九不离十了。


按之前的堆栈继续hook,发现卡住的时候这些方法确实都走了,而正常的时候是不走的,那么在X.Dvc的LIZ继续用抛堆栈大法。
得到如下两种堆栈:
•X.DCM接收到了touch事件,然后交由X.DCc这个类进行手势判断,发现是需要执行缩放的手势,于是执行了相机的缩放功能(由于我们业务原因需要隐藏底部NavigationBar,在Window底部上划会显示NavigationBar,上划的手势同时触发了控件的以为需要执行相机缩放),但是我们的虚拟摄像头又不支持缩放,导致打开相机失败,画面就卡在了之前相机拿到的最后一帧。

X.DCc类

X.DCO的invoke方法

•点击tiktok的切换相机Button,触发进入相机的缩放,这里就和我们之前的点击事件联系上了,红框部分就是补上了之前没关注但是最重要的相机缩放功能判断部分。


至此,我们已经把相机卡住的直接原因和根本原因都找到了,先手势再点击切换相机触发了进入相机缩放功能判断流程,由于我们的虚拟相机不支持缩放,导致打开相机失败,卡在相机的最后一帧(也可能是黑屏)。所以只要交付给framework组开发人员,让他们支持相机缩放相关功能就可以了。
接下来来填前面留下的坑,为什么退到后台会导致status函数的返回值不一样?
我们回到CameraVideoCapturer类,看看这个status()函数到底是个什么鬼!

发现他是父类ExternalVideoCapturer的函数,而且就是返回个字段,那再看看他那里进行了赋值。

通过AndroidStudio自带的字段读写索引功能,很容易找到父类里的start、stop和release函数,以及自身的onErrorOnHandler函数里(也就是我们之前抛-421错误堆栈的函数)。如果熟悉相机开发的同学应该知道,一般我们界面退到后台会释放相机,然后回到前台重新打开。那么接下来我们把这几个函数都hook一下,来验证猜想。

这里我多hook了一个onCaptureStarted函数,这个函数会调用父类的onStart函数,想看看是否会有调了onCaptureStarted但是没调父类的onStart的情况。然后还hook了CameraVideoCapturer自身重写的onStart和父类ExternalVideoCapturer的onStart函数。
下面是刚打开直播时的日志,此时status=1。

•情况一:先滑动直播界面,再按home键,然后回到tiktok,再切换相机,此时status()函数返回1,走了后续Camera.open流程。
这是直播退到后台时的调用,说明确实释放掉了,但是又调用了父类的onStart函数,那么此时的应该为2的status又变回了1。

接下来回到前台,此时一切正常status还是为1,而且重走了自身的onStart函数,相当于相机整个流程完全重开。

再接着切换相机第一次,这时的status还是为1,相机正常,紧接着我们发现了-421错误,发现又重走了父类的onStart函数,那么此时status还是1。

接下来切换相机画面卡住了,但还是走了父类的onStart。


以上就是第一种情况,由于每次切换相机都会抛完-421错误后,再调用父类ExternalVideoCapturer的start函数来重置status,也就造成了能调用Camera.open但是画面卡住的情况。
•情况二:先滑动界面,再切换相机,然后按home键,接着回到tiktok,最后切换相机,此时status()函数返回2,没走后续Camera.open流程。
前面流程就不贴了,直接开后面的流程记录。
退到后台status=1

回到前台status=1

切换相机第一次,画面正常status=1

切换相机第二次,在调用switchCamera之前先抛了一次-421的错误,导致status=2,然后switchCamera函数里判断status为2就被return,没有调用Camera.open函数,接下来也没有更多函数来重置status的状态,所以无论怎么切换相机,都无法执行到Camera.open(),除非tiktok退到后台,再回到前台。


以上就是第二钟情况。
抖音怎么直播王者荣耀
打开抖音APP,然后击页面下方的+号,之后选择直播模式,再点击开始游戏直播,会得到一个地址,点击复制地址,打开小熊录屏软件,然后点击页面下方的去开启,把刚在抖音复制的地址,粘贴到搜索栏上,就可以开始直播了。
短视频运营实时更新
链接:https://pan.baidu.com/s/1ceM1UDY9P8K13t68BdIyYA?pwd=2D72
提取码:2D72
资源包含:短视频带货好物分享实操、剪映教程完整版5980大蓝线下课陈厂长最新全套课短视频拍摄稳定器课程抖音解封话术抖音小店低成本引流500单总结快手短视频爆粉变现零基础学航拍2022开课吧透透糖:短视频带货爆单实战营修龙抖音房产零基础短视频运营策划教程张sir豆荚运营.莽哥·餐饮实体店引流课程孙晓迪职业导演核心课群响IP06期短视频编导先导课(文案公式+三个表格推导)朋友圈收费138元的抖音最新搬运技术抖音变现+抖音新项目+信息换金术,三套合集【无水印】【安心】口播入门与技巧课—从小白到高手有了表现力咋拍都能火的短视频表演课七天陪跑系统实战课【完结】从0开始学习剧本杀等
新一代奔驰E级内饰官图发布 配备超级大屏
2月23日,2024款奔驰E级内饰官图正式发布,新一代E级豪华轿车将配备MBUX“超级”大屏和各种高科技配置,内置TikTok和自拍相机。今年晚些时候,这款重新设计的轿车将在海外率先上市,这将是一次彻底的改变,因为这款车型的设计宗旨是提供音乐、游戏和流媒体内容的“沉浸式娱乐体验”。全新一代奔驰E级可能会在今年春季全球首发。之后国产版新一代奔驰E级也将更新换代。
新一代奔驰E级内饰
奔驰EQE内饰
新一代奔驰E级的内饰中控和新款C级、S级完全不同,反而和奔驰EQE非常相似。据悉,新一代奔驰e级将提供一个MBUX超级屏幕,该大屏从奔驰EQE巨大的MBUXHyperscreen屏幕吸取灵感。奔驰没有透露细节,但它有一个相当大的信息娱乐系统,以及前排乘客的显示屏。
新一代奔驰E级有一个独立的数字仪表盘,提供经典和运动两种主题风格。经典主题的显示屏显示类似表盘的速度表和转速表,而运动型显示屏采用红色主题,同时还将转速表放在前面和中间。
说到屏幕,第三方应用程序可以直接安装,而不是通过AndroidAuto或AppleCarPlay进行镜像。为了充分利用这一功能,梅赛德斯正在推出一个AppStore,该商店将“逐步扩大应用程序”,以方便客户下载软件。
在发布时,该AppStore将提供各种各样的应用程序,包括愤怒的小鸟,TikTok,Zoom和Webex。其中一些可以与汽车的新自拍和视频摄像机一起使用,该相机安装在仪表板顶部,并包含在MBUX超级屏幕中。当汽车停放时,车主可以使用相机拍摄照片和视频。
除了上述应用外,用户还可以找到Vivaldi网络浏览器和ZYNC娱乐门户APP。奔驰表示,后者提供“点播内容、互动体验、本地视频节目、体育、新闻等等”。该公司补充说:“来自全球、地区和本地知名合作伙伴的30多种流媒体服务已经可用,而更多的合作伙伴和渠道正在不断整合。”
为了防止驾驶员被前排乘客显示屏分散注意力,新一代奔驰E级有一个“视觉屏蔽功能”,它使用摄像头和“先进的过滤概念,以确保驾驶员看不到屏幕上的内容”。实际上,系统会监控驾驶员的眼球运动,并确定他们是否盯着乘客屏幕的时间过长。如果发生这种情况,“乘客屏幕的亮度会降低,因此乘客可以继续观看内容,而驾驶员看不到这些内容。但是,屏蔽可以打开和关闭,因此这个安全功能是人为可控的,具有一定的安全隐患。
新一代奔驰E级还着眼于人工智能的未来。这款汽车将有模板和自创程序,允许车主告诉汽车“如果y发生了,就做x”。例如,“寒冷日子”设置可以在室外温度达到一定水平时打开加热座椅,同时将环境照明系统改为“温暖的”橙色。
未来,梅赛德斯·奔驰希望通过人工智能完全自动化日常任务。最初将侧重于加热,通风和按摩功能,但梅赛德斯表示“将陆续集成其他内部系统。
新一代奔驰E级将提供主动环境照明系统和17扬声器Burmester4D环绕声系统,使车主能够“用三种感官体验音乐”。说到这里,有一种主动发光条,可以对音乐、电影和应用程序的声音做出反应。例如,快速序列可以引起快速的光线变化,而“流动的节奏可以创造柔和融合的灯光情绪。”
奔驰指出,这条灯带不仅是为了好玩,还可以用来传达安全信息。特别是,它可以将停车辅助系统的信息可视化,并可以发出视觉警告,以确保“在穿越交叉交通的十字路口时更加安全”。
此外,它的技术特色还包括EnergizingComfort和EnergizingCoach功能,以及用于快速数据传输的5G技术。
梅赛德斯没有公布更多对内饰细节,但我们可以看到新的方向盘以及简约的中控台。还有“众多的内饰配色组合”。全新E级将提供带有钻石绗缝的Nappa皮革座椅以及新的背光DarkAsh开孔木质装饰。如果这还不让你喜欢,还将有银色混合金属装饰以及来自s级的Manufaktur钢琴漆流线装饰。
新一代奔驰E级的内饰不用说又是同级标杆了,再次甩开新款宝马5系和奥迪A6,相比之下,宝马5系将配备的双联屏简直太弱了,大家觉得怎么样?最后,梅赛德斯将于今年晚些时候在美国推出新一代E-Class,今年春天可能会进行全球首发。
资料:梅赛德斯奔驰
新车迷编辑,喜欢本文请用你发财的小手点赞支持一下,谢谢!
【本文来自易车号作者新车迷Auto,版权归作者所有,任何形式转载请联系作者。内容仅代表作者观点,与易车无关】
关于tiktok镜像功能,抖音直播镜像在哪里设置的介绍到此结束,希望对大家有所帮助。