我正在使用AVMutableComposition并AVAssetExportSession修剪视频.随机地,我的意思是随机(我无法一致地再现)用户的视频在修剪视频的开头有几个黑框.音频不受影响.我可以100%确认正在修剪的视频与它没有任何关系,因为这种情况适用于来自所有不同来源的各种视频.
任何有关为什么这些视频在开始时使用黑色框架导出的任何见解都将非常受欢迎.谢谢!
一些相关的代码(抱歉长度):
// AVURLAssetPreferPreciseDurationAndTimingKey added in attempt to solve issue
let videoAsset = AVURLAsset(URL: url, options: [AVURLAssetPreferPreciseDurationAndTimingKey: true])
var mixComposition = AVMutableComposition()
let compositionVideoTrack = mixComposition.addMutableTrackWithMediaType(
AVMediaTypeVideo,
preferredTrackID: Int32(kCMPersistentTrackID_Invalid)
)
let clipVideoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0] as! AVAssetTrack
let videoSize = clipVideoTrack.naturalSize
// startTime and duration are NSTimeInterval types
let start = startTime == 0 ? kCMTimeZero : CMTimeMakeWithSeconds(startTime, videoAsset.duration.timescale)
var dur = CMTimeMakeWithSeconds(duration, videoAsset.duration.timescale)
if dur.value >= videoAsset.duration.value {
dur = videoAsset.duration
}
compositionVideoTrack.insertTimeRange(
CMTimeRange(start: start, …Run Code Online (Sandbox Code Playgroud) 我有一个遗留的Sails.JS项目,目前在Sails版本0.10.5上.我想将项目升级到Sails 0.11.x及以后,但有一个问题.该项目充当本机移动应用程序的后端,因此与升级Web服务器不同,您可以将新的sails.io.js和socket.io客户端库链接到您的网站,我们不能依赖用户升级本机应用程序.
我是唯一一个面对这个问题的人,这似乎是不合理的,所以我想向社区提出一个问题,看看是否有任何我没有想到的辉煌让升级无缝进行.
我想到的想法是:
使用子域运行两个版本的应用程序(https://v2.domain.com/api/ ..).这显然是最明显的解决方案,但需要相当数量的服务器配置才能实现,我们目前正在运行的PAAS上定制环境的能力有限,因此这可能需要切换提供商.
除了参与这条路线所涉及的工作之外,还有决定如何处理代码库.您可以为两个风帆版本维护代码的两个分支,但这意味着修复错误两次和两次错误的可能性.或者您可以在代码中添加条款以检查它正在运行的风帆版本.这些看起来都不是很干净,但我认为如果归结为这两个选项我会选择其中的第二个.
挖掘sails.js核心代码,找到一种方法让socket.io 0.9和socket.io 1.0同时并行运行.这将允许我让所有用户在关闭0.9支持之前更新他们的移动应用程序.这也有明显的陷阱,但主要是在框架层面上进行如此全面的变革.
我希望能够深入了解其他人在这种情况下所做的事情,如果解决方案只是保留在Sails 0.10.5那么这很好,但是我希望得到原生Socket.IO库的额外好处.出现在v.1.0而不是我目前正在使用的半家庭旋转解决方案.此外,继续获得安全性和功能更新将会很高兴.