小编Sat*_*ima的帖子

iPhone上的HTTP直播服务器

我正在尝试在iPhone上运行HTTP实时流媒体服务器,它从摄像头捕获视频流并将其提供给HTML5客户端(支持HTTP直播流).

到目前为止,我有以下工作.

  1. iOS上的HTTP Live流媒体服务器(用Node.js编写),它从视频捕获模块生成的传输流(视频/ MP2T)文件列表中动态更新索引文件.
  2. 视频捕获模块,它使用AVCaptureMovieFileOutput连续生成一系列10秒的QuickTime文件(它们之间有一个小的差距,但它对我的应用程序来说足够小).

我需要的是一个即时转换器,它将每个QuickTime文件转换为传输流文件(无需更改编码,我只需要一个不同的容器),它连接上面的两个模块.

我采用这种方法是因为这是利用iPhone硬件视频编码器的唯一方法(我在这里做了很多关于这个主题的研究,我99%肯定.请让我知道我是不是错了.

有些人建议使用ffmpeg,但我宁愿使用MIT许可证(如果有的话)使用更小的代码,或者从头开始编写代码(并使用MIT许可证开源).

我对这个媒体容器的事情很陌生,如果有人能指出我正确的方向(示例代码,开源,文档......),我真的很感激.

streaming avfoundation node.js http-live-streaming ios

9
推荐指数
1
解决办法
5152
查看次数

嵌套 ObservedObject 中的更改不会更新 UI

当我有一个嵌套的 ObservedObject 时,嵌套对象的已发布属性的更改不会更新 UI,直到父对象发生某些情况。这是一个功能、一个错误(在 SwiftUI 中)还是我的代码中的一个错误?

这是一个简化的示例。单击父级的开/关按钮会立即更新 UI,但单击子级的开/关按钮不会更新,直到父级更新为止。

我正在运行 Xcode 12.5.1。

import SwiftUI

class NestedObject: NSObject, ObservableObject {
    @Published var flag = false
}
class StateObject: NSObject, ObservableObject {
    @Published var flag = false
    @Published var nestedState = NestedObject()
}

struct ContentView: View {
    @ObservedObject var state = StateObject()
    var body: some View {
        VStack {
            HStack {
                Text("Parent:")
                Button(action: {
                    state.flag.toggle()
                }, label: {
                    Text(state.flag ? "On" : "Off")
                })
            }
            HStack {
                Text("Child:")
                Button(action: {
                    state.nestedState.flag.toggle()
                }, label: …
Run Code Online (Sandbox Code Playgroud)

swiftui combine

8
推荐指数
2
解决办法
3669
查看次数

Firebase 安装错误,显示“未为 grpc@1.19.0 和 node@12.1.0 找到预构建的二进制文件”

我正在尝试在我的 MacBook 上安装 firebase,但出现以下错误。

$ npm install -g firebase

> grpc@1.19.0 install /Users/satoshi/.nvm/versions/node/v12.1.0/lib/node_modules/firebase/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp WARN Using needle for node-pre-gyp https download 
node-pre-gyp WARN Tried to download(404): https://node-precompiled-binaries.grpc.io/grpc/v1.19.0/node-v72-darwin-x64-unknown.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for grpc@1.19.0 and node@12.1.0 (node-v72 ABI, unknown) (falling back to source compile with node-gyp) 
gyp ERR! configure error 
gyp ERR! stack Error: Command failed: /anaconda3/bin/python -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack …
Run Code Online (Sandbox Code Playgroud)

node.js firebase

6
推荐指数
1
解决办法
2017
查看次数

如何在AVMutableComposition中同时为多个视频层设置动画?

我正在编写一段代码,以从iOS设备上的多个图像和多个视频生成幻灯片视频。我可以用一个视频和多个图像来做到这一点,但是我不知道如何将其增强为多个视频。

这是我可以用一个视频和两个图像生成的示例视频

这是准备出口商的主要程序。

// Prepare the temporary location to store generated video
NSURL * urlAsset = [NSURL fileURLWithPath:[StoryMaker tempFilePath:@"mov"]];

// Prepare composition and _exporter
AVMutableComposition *composition = [AVMutableComposition composition];
AVAssetExportSession* exporter = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL = urlAsset;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
exporter.shouldOptimizeForNetworkUse = YES;
exporter.videoComposition = [self _addVideo:composition time:timeVideo];
Run Code Online (Sandbox Code Playgroud)

这是_addVideo:time:方法,它创建videoLayer。

-(AVVideoComposition*) _addVideo:(AVMutableComposition*)composition time:(CMTime)timeVideo {
    AVMutableVideoComposition* videoComposition = [AVMutableVideoComposition videoComposition];
    videoComposition.renderSize = _sizeVideo;
    videoComposition.frameDuration = CMTimeMake(1,30); // 30fps
    AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

    [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,timeVideo) ofTrack:_baseVideoTrack atTime:kCMTimeZero …
Run Code Online (Sandbox Code Playgroud)

video core-animation avfoundation ios avmutablecomposition

5
推荐指数
1
解决办法
1302
查看次数

Firebase 身份验证:是否可以查看用户的 Twitter ID?

我刚刚在我的 Firebase 网络应用中实现了 Twitter 登录。当用户成功登录时,我想查看用户的 Twitter ID(以启用用户之间基于 Twitter 的通信)。

根据文档(https://firebase.google.com/docs/auth/web/manage-users),提供者特定信息位于用户信息的 providerData 下。

在 providerData 下,我看到以下内容

displayName: "Satoshi Nakajima" (as I expected)
email: null (as I expected)
phoneNumber: null (as I expected)
photoURL: "https://abs.twimg.com/..." (as I expected) 
providerId: "twitter.com" (of course)
uid: "1129128..." (what is this?)
Run Code Online (Sandbox Code Playgroud)

uid 看起来像一个唯一的id,但它与我们通常使用的Twitter ID 不同,例如@snakajime(这是我的)。

我想知道为什么我在这里看不到 Twitter id。我错过了什么吗?是否有任何 API 可以从这个奇怪的 uid 中获取 Twitter ID?

twitter firebase firebase-authentication

5
推荐指数
1
解决办法
1115
查看次数

SwiftUI:如何仅显示 iPhone 的一些工具栏按钮

我有一组工具栏按钮,仅当设备是 iPhone(不是 iPad)时才应显示。

以下代码失败并出现此错误:

包含控制流语句的闭包不能与结果生成器“ToolbarContentBuilder”一起使用

我确实明白为什么它会失败,但我无法提出一个解决方案来实现我所需要的。

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            List {
                NavigationLink(
                    destination: Hello(),
                    label: {
                        Text("Hello")
                    })
            }
        }
    }
}

struct Hello: View {
    var body: some View {
        Text("Hello World")
            .toolbar() {
                if UIDevice.current.userInterfaceIdiom == .phone {
                    ToolbarItem(placement: .navigationBarTrailing) {
                        Button(action: {
                            // do something
                        }, label: {
                            Text("Button1")
                        })
                    }
                    ToolbarItem(placement: .navigationBarTrailing) {
                        Button(action: {
                            // do something
                        }, label: {
                            Text("Button2")
                        })
                    }
                }
                ToolbarItem(placement: …
Run Code Online (Sandbox Code Playgroud)

toolbaritems swiftui swiftui-view

4
推荐指数
1
解决办法
772
查看次数

SwiftUI:如何在 TextEditor 中禁用“智能引号”

我正在使用 SwiftUI 为 MacOS 开发基于 Python 的图形计算器。

https://github.com/snakajima/macplot

我使用 SwiftUI 的 TextEditor 作为 Python 代码的编辑器,但我无法弄清楚如何禁用智能引号(UITextInputTraits、smartQuotesType:UITextSmartQuotesType)。

        VStack {
            TextEditor(text: $pythonScript.script)
            HStack {
                Button(action: {
                    pythonScript.run(clear: settings.shouldClear)
                }, label: {
                    Text("Plot")
                })
                Toggle("Clear", isOn: $settings.shouldClear)
            }
            if let errorMsg = pythonScript.errorMsg {
                Text(errorMsg)
                    .foregroundColor(.pink)
            }
        }
Run Code Online (Sandbox Code Playgroud)

appkit uitextinputtraits swift swiftui

2
推荐指数
1
解决办法
136
查看次数

带有布尔标志的淡入/淡出动画

我正在尝试在 SwiftUI 中使用淡入/淡出动画实现一个简单的“点击切换 UI 的可见性”。下面的代码按照我的预期设置了 Text 元素的淡入效果,但当isVisible变为 false 时,它​​会立即隐藏 Text 元素。

我想了解为什么这段代码不起作用,以及如何以最自然的方式修复它。

import SwiftUI

struct ContentView: View {
    @State var isVisible = true
    var body: some View {
        ZStack {
            Rectangle()
                .foregroundColor(.blue)
                .gesture(TapGesture(count: 1).onEnded {
                    withAnimation(.easeInOut(duration: 1.0)) {
                        isVisible.toggle()
                    }
                })
            if isVisible {
                Text("Tap me!")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Run Code Online (Sandbox Code Playgroud)

我在 Big Sur 上使用 Xcode 12.5,我的 iPhone 运行的是 iOS 14.5.1。

swiftui swiftui-animation

2
推荐指数
1
解决办法
7985
查看次数

如何同步Firestore规则和索引?

我有一个Firebase项目,该项目使用Firestore。我经常在Firebase控制台上手动修改安全规则和索引,但是我的开发机上也有本地副本(Firestore.rules和Firestore.indexes.json),当我这样做时,它们会变得不同步。

我想知道什么是同步它们的最佳实践。到目前为止,我将这些更改手动应用于本地副本,但这显然是一个容易出错的过程。

我不想通过部署过时的规则来意外覆盖这些设置。

我将不胜感激任何建议。

firebase google-cloud-firestore firebase-security-rules

1
推荐指数
1
解决办法
172
查看次数