在出现依赖的库版本不一致的情况时,gradle会默认使用新版本覆盖旧版本,通常不需要手动去解决。那么出现冲突一般为当前工程的某个直接引用的库版本,低于依赖库/工程中依赖树的版本
- 将依赖关系打印到日志文件中:
./gradlew -q app:dependencies > dependencies.txt
- 试着将冲突的
keep writing
在出现依赖的库版本不一致的情况时,gradle会默认使用新版本覆盖旧版本,通常不需要手动去解决。那么出现冲突一般为当前工程的某个直接引用的库版本,低于依赖库/工程中依赖树的版本
./gradlew -q app:dependencies > dependencies.txt
最近,项目中需要实现这样一个需求,局域网内两台设备,一台通过摄像头录像,并实时传输到另一台设备上显示,要求延迟在1秒之内。
调研了一下局域网内视频传输的东西,网上找了一些相关项目,找到的最接近需求的是Endoscope,只不过这个实现会有4-5秒的延迟,造成延迟的主要原因在于他是在录制端开启了一个rtsp服务:
StartStreamPresenter.java
1 | private void startRtspServer() { |
显示端使用Android原生MediaPlayer去链接视屏源并播放:
PlayerStreamActivity.java
1 | mediaPlayer.setDataSource(this, videoUri); |
通过调试发现视屏发送端在有客户端链接后,立即开始录制并输出视屏数据,怀疑是MediaPlayer的缓存机制导致了视频不同步的问题。
因此,在此基础上:
##########################################
另,在网上看到很多实现方式是通过将每帧数据压缩为Jpeg格式之后传输、显示,这里我也将这种方式实现了一下,通过对比发现效果很不理想,可以通过修改DetectConst.TRANS_MODE
来切换测试
下载ndk:
https://developer.android.google.cn/ndk/downloads/
下载ffmpeg:
http://ffmpeg.org/download.html#releases
./configure
1 | ############# |
add build_android.sh
chmod +x build_android.sh
打开并编辑build_android.sh:
1 | #!/bin/bash |
./build_android.sh
@Autowired为Spring提供的注解,
需导入Package:org.springframework.beans.factory.annotation.Autowired;
只按照byType 注入。
1 | @Autowired |
@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。
如果想使用按名称装配,可以结合@Qualifier注解一起使用。
1 | @Autowired @Qualifier("userDao") |
1 | package main |
1 | golang |