我正在尝试在iPhone上运行HTTP实时流媒体服务器,它从摄像头捕获视频流并将其提供给HTML5客户端(支持HTTP直播流).
到目前为止,我有以下工作.
我需要的是一个即时转换器,它将每个QuickTime文件转换为传输流文件(无需更改编码,我只需要一个不同的容器),它连接上面的两个模块.
我采用这种方法是因为这是利用iPhone硬件视频编码器的唯一方法(我在这里做了很多关于这个主题的研究,我99%肯定.请让我知道我是不是错了.
有些人建议使用ffmpeg,但我宁愿使用MIT许可证(如果有的话)使用更小的代码,或者从头开始编写代码(并使用MIT许可证开源).
我对这个媒体容器的事情很陌生,如果有人能指出我正确的方向(示例代码,开源,文档......),我真的很感激.
当我有一个嵌套的 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) 我正在尝试在我的 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) 我正在编写一段代码,以从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) 我刚刚在我的 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?
我有一组工具栏按钮,仅当设备是 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) 我正在使用 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) 我正在尝试在 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。
我有一个Firebase项目,该项目使用Firestore。我经常在Firebase控制台上手动修改安全规则和索引,但是我的开发机上也有本地副本(Firestore.rules和Firestore.indexes.json),当我这样做时,它们会变得不同步。
我想知道什么是同步它们的最佳实践。到目前为止,我将这些更改手动应用于本地副本,但这显然是一个容易出错的过程。
我不想通过部署过时的规则来意外覆盖这些设置。
我将不胜感激任何建议。
swiftui ×4
firebase ×3
avfoundation ×2
ios ×2
node.js ×2
appkit ×1
combine ×1
streaming ×1
swift ×1
swiftui-view ×1
toolbaritems ×1
twitter ×1
video ×1