es
Feedback
KYCsolution

KYCsolution

Ir al canal en Telegram
3 316
Suscriptores
Sin datos24 horas
+277 días
+3130 días

Carga de datos en curso...

Nube de Etiquetas
Sin datos
¿Algún problema? Por favor, actualice la página o contacte a nuestro gerente de soporte.
Menciones Entrantes y Salientes
---
---
---
---
---
---
Atraer Suscriptores
septiembre '24
septiembre '24
+70
en 0 canales
agosto '24
+32
en 0 canales
Get PRO
julio '24
+7
en 0 canales
Get PRO
junio '24
+112
en 0 canales
Get PRO
mayo '24
+72
en 0 canales
Get PRO
abril '24
+65
en 0 canales
Get PRO
marzo '24
+169
en 0 canales
Get PRO
febrero '24
+102
en 0 canales
Get PRO
enero '24
+101
en 0 canales
Get PRO
diciembre '23
+94
en 0 canales
Get PRO
noviembre '23
+75
en 0 canales
Get PRO
octubre '23
+88
en 0 canales
Get PRO
septiembre '23
+121
en 0 canales
Get PRO
agosto '23
+80
en 0 canales
Get PRO
julio '23
+85
en 0 canales
Get PRO
junio '23
+97
en 0 canales
Get PRO
mayo '23
+103
en 0 canales
Get PRO
abril '23
+131
en 0 canales
Get PRO
marzo '23
+120
en 0 canales
Get PRO
febrero '23
+45
en 0 canales
Get PRO
enero '23
+78
en 0 canales
Get PRO
diciembre '22
+103
en 0 canales
Get PRO
noviembre '22
+146
en 0 canales
Get PRO
octubre '22
+165
en 0 canales
Get PRO
septiembre '22
+215
en 0 canales
Get PRO
agosto '22
+242
en 0 canales
Get PRO
julio '22
+74
en 0 canales
Get PRO
junio '22
+58
en 0 canales
Get PRO
mayo '22
+47
en 0 canales
Get PRO
abril '22
+73
en 0 canales
Get PRO
marzo '22
+91
en 0 canales
Get PRO
febrero '22
+72
en 0 canales
Get PRO
enero '22
+78
en 0 canales
Get PRO
diciembre '21
+52
en 0 canales
Get PRO
noviembre '21
+55
en 0 canales
Get PRO
octubre '21
+99
en 0 canales
Get PRO
septiembre '21
+158
en 0 canales
Get PRO
agosto '21
+132
en 0 canales
Get PRO
julio '21
+122
en 0 canales
Get PRO
junio '21
+39
en 0 canales
Get PRO
mayo '21
+30
en 0 canales
Get PRO
abril '21
+66
en 0 canales
Get PRO
marzo '21
+47
en 0 canales
Get PRO
febrero '21
+832
en 0 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
27 septiembre+4
26 septiembre+2
25 septiembre+6
24 septiembre+16
23 septiembre+4
22 septiembre+3
21 septiembre+4
20 septiembre0
19 septiembre+2
18 septiembre+4
17 septiembre+3
16 septiembre+2
15 septiembre0
14 septiembre+2
13 septiembre+3
12 septiembre0
11 septiembre+2
10 septiembre+6
09 septiembre+2
08 septiembre+4
07 septiembre+1
06 septiembre0
05 septiembre0
04 septiembre0
03 septiembre0
02 septiembre0
01 septiembre0
Publicaciones del Canal
photo content

2
Sin texto...
460
3
Sin texto...
553
4
有个公司注册订单的请主动联系我,号没了,找不到你
337
5
Sin texto...
636
6
支持hls流所以延迟可以低于1s
624
7
把这个编译了就可以用了
617
8
实现ios推流的全局虚拟相机,同时带有exif
600
9
这个推流虚拟相机的功能在越狱的iOS设备上实现,可以支持较广泛的iOS版本。通常,越狱工具是基于iOS的具体版本而变化的,因此兼容的iOS版本取决于当前可用的越狱工具。以下是大致的支持情况: • iOS 10 - iOS 12: 越狱工具(如unc0ver、Electra)稳定支持这些版本。虚拟相机功能应该在这些系统上正常运行。 • iOS 13 - iOS 14: 越狱工具如checkra1n和unc0ver也支持这些版本,虚拟相机功能依赖的系统API仍然可用。 • iOS 15 - iOS 16: 对于这些较新的系统,checkra1n 仍然可以支持部分设备的越狱,特别是使用A11芯片的设备(如iPhone X)。unc0ver等其他工具也在不断更新,但并不全面支持最新设备。虚拟相机功能在这些版本上有可能运行,但可能需要一些额外调整。 • iOS 17 及以上: 当前对iOS 17及更高版本的越狱支持较为有限,因此这类推流虚拟相机功能可能无法立即在这些版本上实现,或需要等待更成熟的越狱工具发布。
586
10
Control File (control) Package: com.yourname.virtualcamera Name: VirtualCamera Version: 1.0-1 Architecture: iphoneos-arm Description: A virtual camera for jailbroken devices, supporting HLS streams, local video, and EXIF metadata handling. Maintainer: Your Name <your.email@example.com> Author: Your Name Section: Tweaks Depends: mobilesubstrate
515
11
Makefile ARCHS = arm64 arm64e TARGET = iphone:clang:latest:13.0 THEOS_DEVICE_IP = localhost THEOS_DEVICE_PORT = 22 include $(THEOS)/makefiles/common.mk TWEAK_NAME = VirtualCamera VirtualCamera_FILES = Tweak.xm VirtualCamera_FRAMEWORKS = UIKit AVFoundation CoreMedia MediaPlayer ImageIO include $(THEOS_MAKE_PATH)/tweak.mk after-install:: install.exec "killall -9 SpringBoard"
482
12
- (void)extractExifFromMedia:(NSURL *)mediaURL { CGImageSourceRef source = CGImageSourceCreateWithURL((__bridge CFURLRef)mediaURL, NULL); NSDictionary *metadata = (__bridge NSDictionary *)CGImageSourceCopyPropertiesAtIndex(source, 0, NULL); if (metadata) { NSDictionary *exifData = metadata[(NSString *)kCGImagePropertyExifDictionary]; NSString *cameraMake = exifData[(NSString *)kCGImagePropertyExifMake]; NSString *cameraModel = exifData[(NSString *)kCGImagePropertyExifModel]; NSString *originalDateTime = exifData[(NSString *)kCGImagePropertyExifDateTimeOriginal]; [self setCustomExifWithMake:cameraMake model:cameraModel dateTime:originalDateTime]; } CFRelease(source); } - (void)setCustomExifWithMake:(NSString *)make model:(NSString *)model dateTime:(NSString *)dateTime { NSLog(@"设置EXIF: Make: %@, Model: %@, DateTime: %@", make, model, dateTime); } #pragma mark - 视频预览层 - (void)setupPreviewLayer { g_previewLayer = [[AVSampleBufferDisplayLayer alloc] init]; g_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; g_previewLayer.frame = self.view.bounds; [self.view.layer addSublayer:g_previewLayer]; } - (Here's the continuation and final version of the Tweak.xm file, ensuring the jailbroken global virtual camera project is fully integrated with HLS, EXIF metadata, and camera API hooks. ### 1. Tweak.xm (continued) - (void)removePreviewLayer { [g_previewLayer removeFromSuperlayer]; g_previewLayer = nil; } @end #pragma mark - 系统相机钩子 (Hooking the Camera API) %hook AVCaptureSession - (void)startRunning { NSLog(@"启动系统摄像头,并替换为虚拟相机内容"); VirtualCameraViewController *vc = [[VirtualCameraViewController alloc] init]; [vc startVirtualCamera]; %orig; // 可根据需求禁用系统摄像头 } - (void)stopRunning { NSLog(@"停止系统摄像头并关闭虚拟相机"); VirtualCameraViewController *vc = [[VirtualCameraViewController alloc] init]; [vc stopVirtualCamera]; %orig; } %end
389
13
- (void)selectStreamSource { self.selectedVideoSource = @"stream"; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"输入HLS流媒体URL" message:nil preferredStyle:UIAlertControllerStyleAlert]; [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { textField.placeholder = @"http://your-server-ip/live/stream.m3u8"; }]; UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { UITextField *urlField = alertController.textFields.firstObject; self.streamURL = urlField.text; NSLog(@"设置流媒体源 URL: %@", self.streamURL); }]; [alertController addAction:confirmAction]; [self presentViewController:alertController animated:YES completion:nil]; } - (void)setExifData { [self openPhotoLibraryForExif]; } #pragma mark - 启动/关闭虚拟相机 - (void)startVirtualCamera { if (g_cameraRunning) return; if ([self.selectedVideoSource isEqualToString:@"local"]) { NSLog(@"使用本地视频源启动虚拟相机"); // 启动本地视频播放 } else if ([self.selectedVideoSource isEqualToString:@"stream"]) { NSLog(@"使用流媒体源启动虚拟相机"); NSURL *streamURL = [NSURL URLWithString:self.streamURL]; AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:streamURL]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePlaybackError:) name:AVPlayerItemFailedToPlayToEndTimeNotification object:playerItem]; g_player = [AVPlayer playerWithPlayerItem:playerItem]; // 添加视频预览层 g_previewLayer = [[AVSampleBufferDisplayLayer alloc] init]; g_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; g_previewLayer.frame = self.view.bounds; [self.view.layer addSublayer:g_previewLayer]; [g_player play]; } g_cameraRunning = YES; } - (void)handlePlaybackError:(NSNotification *)notification { NSError *error = [notification.userInfo objectForKey:AVPlayerItemFailedToPlayToEndTimeErrorKey]; NSLog(@"播放 HLS 流时发生错误: %@", error.localizedDescription); // 显示用户友好错误信息 } - (void)stopVirtualCamera { if (!g_cameraRunning) return; [g_player pause]; g_player = nil; [self removePreviewLayer]; g_cameraRunning = NO; } #pragma mark - 相册选择和EXIF提取 - (void)openPhotoLibraryForVideoSource { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.mediaTypes = @[(NSString *)kUTTypeMovie]; picker.delegate = self; [self presentViewController:picker animated:YES completion:nil]; } - (void)openPhotoLibraryForExif { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie]; picker.delegate = self; [self presentViewController:picker animated:YES completion:nil]; } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info { NSURL *mediaURL = info[UIImagePickerControllerMediaURL]; if ([self.selectedVideoSource isEqualToString:@"local"]) { NSLog(@"处理本地视频源: %@", mediaURL); } else { NSLog(@"处理EXIF文件: %@", mediaURL); [self extractExifFromMedia:mediaURL]; } [self dismissViewControllerAnimated:YES completion:nil]; }
361
14
Tweak.xm(主文件) ` #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> #import <MobileSubstrate/MobileSubstrate.h> #import <CoreMedia/CoreMedia.h> #import <MediaPlayer/MediaPlayer.h> #import <ImageIO/ImageIO.h> static BOOL g_cameraRunning = NO; static AVPlayer *g_player = nil; static AVSampleBufferDisplayLayer *g_previewLayer = nil; @interface VirtualCameraViewController : UIViewController @property (nonatomic, strong) UIButton *selectVideoSourceButton; @property (nonatomic, strong) UIButton *selectStreamSourceButton; @property (nonatomic, strong) UIButton *setExifButton; @property (nonatomic, strong) UIButton *startCameraButton; @property (nonatomic, strong) UIButton *stopCameraButton; @property (nonatomic, strong) NSString *selectedVideoSource; // 视频源类型 @property (nonatomic, strong) NSString *streamURL; // HLS 流 URL @end @implementation VirtualCameraViewController - (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; } #pragma mark - Setup UI - (void)setupUI { self.view.backgroundColor = [UIColor whiteColor]; // 选择本地视频源按钮 self.selectVideoSourceButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.selectVideoSourceButton setTitle:@"选择本地视频源" forState:UIControlStateNormal]; self.selectVideoSourceButton.frame = CGRectMake(50, 100, 300, 50); [self.selectVideoSourceButton addTarget:self action:@selector(selectLocalVideoSource) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.selectVideoSourceButton]; // 选择流媒体源按钮 self.selectStreamSourceButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.selectStreamSourceButton setTitle:@"选择流媒体源" forState:UIControlStateNormal]; self.selectStreamSourceButton.frame = CGRectMake(50, 170, 300, 50); [self.selectStreamSourceButton addTarget:self action:@selector(selectStreamSource) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.selectStreamSourceButton]; // 设置EXIF按钮 self.setExifButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.setExifButton setTitle:@"设置EXIF信息" forState:UIControlStateNormal]; self.setExifButton.frame = CGRectMake(50, 240, 300, 50); [self.setExifButton addTarget:self action:@selector(setExifData) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.setExifButton]; // 启动虚拟相机按钮 self.startCameraButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.startCameraButton setTitle:@"启动虚拟相机" forState:UIControlStateNormal]; self.startCameraButton.frame = CGRectMake(50, 310, 300, 50); [self.startCameraButton addTarget:self action:@selector(startVirtualCamera) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.startCameraButton]; // 关闭虚拟相机按钮 self.stopCameraButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.stopCameraButton setTitle:@"关闭虚拟相机" forState:UIControlStateNormal]; self.stopCameraButton.frame = CGRectMake(50, 380, 300, 50); [self.stopCameraButton addTarget:self action:@selector(stopVirtualCamera) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.stopCameraButton]; } #pragma mark - 视频源选择逻辑 - (void)selectLocalVideoSource { self.selectedVideoSource = @"local"; [self openPhotoLibraryForVideoSource]; }
437
15
完整的越狱版全局虚拟相机项目代码,集成了最新的HLS流媒体功能、EXIF元数据处理以及与系统相机API的挂钩,下面是代码的每个部分。
589
16
有的人自动被t了请自己重新加入下
699
17
https://t.me/+huklObLcISVkMTBh
914
18
https://t.me/boost/KYCsolutionrss
756
19
恢复用户名
944
20
@KYCsolution
942