我正在制作一个视频应用程序,一个接一个地播放大量视频.视频存储在一个AVPlayerItems 数组中.AVQueuePlayer初始化与那些AVPlayerItems和它自动地从该阵列播放视频.
问题是,当它改变播放下一个视频就被卡住了几分之一秒,或者它从一个到另一个过渡的时间创建了一个混蛋.我想改善与某种动画如淡入这一过渡,而更改视频淡出.
我的代码AVQueuePlayer:
AVQueuePlayer *mediaPlayer = [[AVQueuePlayer alloc] initWithItems:arrPlayerItems];
playerLayer=[AVPlayerLayer playerLayerWithPlayer:mediaPlayer];
playerLayer.frame=self.bounds;
playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
playerLayer.needsDisplayOnBoundsChange = NO;
[self.layer addSublayer:playerLayer];
self.layer.needsDisplayOnBoundsChange = YES;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(itemPlayEnded:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[mediaPlayer currentItem]];
Run Code Online (Sandbox Code Playgroud)
我试图创建在过渡的时间一个新层,通过降低其不透明度和增加新的图层的不透明度动画旧层(创建淡出效果所需的渐暗),但可根据需要它无法正常工作.
自定义转换的代码:
-(void)TransitionInVideos {
if (roundf(CMTimeGetSeconds(mediaPlayer.currentTime))==roundf(CMTimeGetSeconds(mediaPlayer.currentItem.duration))) {
[self.layer addSublayer:playerLayerTmp];
//Animation for the transition between videos
[self performSelector:@selector(FadeIn) withObject:nil afterDelay:0.3];
[self performSelector:@selector(FadeOut) withObject:nil afterDelay:0.3];
}
}
-(void)FadeIn {
CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnim.fromValue = [NSNumber numberWithFloat:1.0];
fadeAnim.toValue = [NSNumber numberWithFloat:0.0];
fadeAnim.duration …Run Code Online (Sandbox Code Playgroud) 我想实现一个功能,我希望以我正在传递的音频文件的图像形式获取音频图形.我到处搜索,但没有得到有用的东西.
任何人都可以告诉我获得这个或一些源代码或库来完成这项工作的技术或方法.
我想要的音频文件输出可以从图像中描述.

以下是我在研究中发现的一些链接....
1)http://timbolstad.com/2010/03/14/core-audio-getting-started/
2)http://timbolstad.com/2010/03/16/core-audio-getting-started-pt2/
问题:截取屏幕截图后,通过缩放检查时图像模糊。缩放时图像内的文字似乎变得模糊。
我知道这个问题已经被多次提出,但没有一个人想要得到解决。我已经检查了很多像这样的帖子
到目前为止,该论坛上共享的所有解决方案都是重复的或以任何其他方式相同,但没有一个解决方案可以解决该问题。
这是我正在做的事情:
extension UIView {
func asImage() -> UIImage? {
let format = UIGraphicsImageRendererFormat()
format.opaque = self.isOpaque
let renderer = UIGraphicsImageRenderer(bounds: bounds,format: format)
return renderer.image(actions: { rendererContext in
layer.render(in: rendererContext.cgContext)
})
}
//The other option using UIGraphicsEndImageContext
func asImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.isOpaque, 0.0)
defer { UIGraphicsEndImageContext() }
if let context = UIGraphicsGetCurrentContext() {
self.layer.render(in: context)
return UIGraphicsGetImageFromCurrentImageContext()
}
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
上面的函数将UIView转换为图像,但是返回的图像质量不合格。
我使用了以下方式,但视频没有合并,在输出中,添加到AVMutableCompositionTrack的最后一个视频存储在库中.
NSArray *arrVideoUrl=[objApp.dictSelectedVideos allKeys];
AVURLAsset *video1=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:0] options:nil];
AVURLAsset *video2=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:1] options:nil];
AVURLAsset *audioAsset=[[AVURLAsset alloc]initWithURL:songUrl options:nil];
AVMutableComposition *mixcomposition=[AVMutableComposition composition];
AVMutableCompositionTrack *track1=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[track1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, video1.duration) ofTrack:[[video1 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
atTime:kCMTimeZero error:nil];
AVMutableCompositionTrack *track2=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[track2 insertTimeRange:CMTimeRangeMake(kCMTimeZero, video2.duration) ofTrack:[[video2 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
atTime:kCMTimeZero error:nil];
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?
我正在开发应用程序,我正在获取存储在库中的视频和图像的资产URL.我想知道动态网址包含图片或视频..
ALAsset对象可以使用属性DefaultAssetRepresentation,该属性返回资产对象的MetaData,其中包含从库中获取的图像或视频.
但我已经有资产网址,我不认为使用ALAsset.
所以任何人都知道如何检查资产网址是否包含图片或视频?我在很多地方搜索但没有得到任何东西.请帮我解决这个问题.
提前致谢 !!