From cd6cca863cf0ab8229c09268b14aa8a55b30bfa2 Mon Sep 17 00:00:00 2001 From: yangqingren <564008993@qq.com> Date: Wed, 27 May 2020 17:07:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20audio=20could=20not=20play=EF=BC=8Cfps?= =?UTF-8?q?=20fault-tolerant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SVGAPlayer.xcodeproj/project.pbxproj | 4 ++++ SVGAPlayer/Samples/audio_biling.svga | Bin 0 -> 16473 bytes Source/SVGAAudioLayer.h | 2 ++ Source/SVGAPlayer.m | 27 ++++++++++++++++----------- 4 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 SVGAPlayer/Samples/audio_biling.svga diff --git a/SVGAPlayer.xcodeproj/project.pbxproj b/SVGAPlayer.xcodeproj/project.pbxproj index d9bf999..5df71d9 100644 --- a/SVGAPlayer.xcodeproj/project.pbxproj +++ b/SVGAPlayer.xcodeproj/project.pbxproj @@ -58,6 +58,7 @@ 90D7CA1C1F7FB114006E74F0 /* rose_1.5.0.svga in Resources */ = {isa = PBXBuildFile; fileRef = 90D7CA1A1F7FB114006E74F0 /* rose_1.5.0.svga */; }; 90D7CA1E1F7FB34E006E74F0 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 90D7CA1D1F7FB34E006E74F0 /* libz.tbd */; }; 90DB59B51F96026E00894727 /* SVGAImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 90DB59B41F96026E00894727 /* SVGAImageView.m */; }; + E83A58D9247E0E6A00D9F404 /* audio_biling.svga in Resources */ = {isa = PBXBuildFile; fileRef = E83A58D8247E0E6A00D9F404 /* audio_biling.svga */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -119,6 +120,7 @@ 90DB59B41F96026E00894727 /* SVGAImageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SVGAImageView.m; sourceTree = ""; }; 92332F7A897BF4379D765B05 /* libPods-SVGAPlayer React.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SVGAPlayer React.a"; sourceTree = BUILT_PRODUCTS_DIR; }; E02B8713B25C0283C736EE03 /* Pods-SVGAPlayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SVGAPlayer.release.xcconfig"; path = "Pods/Target Support Files/Pods-SVGAPlayer/Pods-SVGAPlayer.release.xcconfig"; sourceTree = ""; }; + E83A58D8247E0E6A00D9F404 /* audio_biling.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = audio_biling.svga; sourceTree = ""; }; FF89C40C3E9839DA5DE71191 /* Pods-SVGAPlayer React.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SVGAPlayer React.release.xcconfig"; path = "Pods/Target Support Files/Pods-SVGAPlayer React/Pods-SVGAPlayer React.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -249,6 +251,7 @@ 90D7C9FA1F7E2AA3006E74F0 /* Samples */ = { isa = PBXGroup; children = ( + E83A58D8247E0E6A00D9F404 /* audio_biling.svga */, 718A146C235718E000FED5D3 /* Rocket.svga */, 71DAA8A42355B3ED006608A1 /* Goddess.svga */, 71A8679022B7785100176CD6 /* matteRect.svga */, @@ -373,6 +376,7 @@ 71A8679322B7853600176CD6 /* matteBitmap.svga in Resources */, 90D7CA1C1F7FB114006E74F0 /* rose_1.5.0.svga in Resources */, 90D7CA1B1F7FB114006E74F0 /* rose_2.0.0.svga in Resources */, + E83A58D9247E0E6A00D9F404 /* audio_biling.svga in Resources */, 71DAA8A52355B3ED006608A1 /* Goddess.svga in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/SVGAPlayer/Samples/audio_biling.svga b/SVGAPlayer/Samples/audio_biling.svga new file mode 100644 index 0000000000000000000000000000000000000000..d9b7166932208ff05120212aa2f51faa47a6f86f GIT binary patch literal 16473 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 BR`dV> literal 0 HcmV?d00001 diff --git a/Source/SVGAAudioLayer.h b/Source/SVGAAudioLayer.h index e11db24..97ee6f4 100644 --- a/Source/SVGAAudioLayer.h +++ b/Source/SVGAAudioLayer.h @@ -15,6 +15,8 @@ @property (nonatomic, readonly) AVAudioPlayer *audioPlayer; @property (nonatomic, readonly) SVGAAudioEntity *audioItem; +@property (nonatomic, assign) BOOL audioPlaying; + - (instancetype)initWithAudioItem:(SVGAAudioEntity *)audioItem videoItem:(SVGAVideoEntity *)videoItem; diff --git a/Source/SVGAPlayer.m b/Source/SVGAPlayer.m index 92132e2..61aa19e 100644 --- a/Source/SVGAPlayer.m +++ b/Source/SVGAPlayer.m @@ -31,7 +31,6 @@ @interface SVGAPlayer () @property (nonatomic, assign) NSRange currentRange; @property (nonatomic, assign) BOOL forwardAnimating; @property (nonatomic, assign) BOOL reversing; -@property (nonatomic, assign) BOOL audioPlaying; @end @@ -79,8 +78,11 @@ - (void)startAnimation { } [self stopAnimation:NO]; self.loopCount = 0; + if (self.videoItem.FPS == 0) { + NSLog(@"videoItem FPS could not be 0!"); + return; + } self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(next)]; - self.displayLink.frameInterval = 60 / self.videoItem.FPS; [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; self.forwardAnimating = !self.reversing; @@ -125,13 +127,12 @@ - (void)clear { } - (void)clearAudios { - if (!self.audioPlaying) { - return; - } for (SVGAAudioLayer *layer in self.audioLayers) { - [layer.audioPlayer stop]; + if (layer.audioPlaying) { + [layer.audioPlayer stop]; + layer.audioPlaying = NO; + } } - self.audioPlaying = NO; } - (void)stepToFrame:(NSInteger)frame andPlay:(BOOL)andPlay { @@ -149,6 +150,10 @@ - (void)stepToFrame:(NSInteger)frame andPlay:(BOOL)andPlay { [self update]; if (andPlay) { self.forwardAnimating = YES; + if (self.videoItem.FPS == 0) { + NSLog(@"videoItem FPS could not be 0!"); + return; + } self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(next)]; self.displayLink.frameInterval = 60 / self.videoItem.FPS; [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; @@ -324,14 +329,14 @@ - (void)update { [CATransaction setDisableActions:NO]; if (self.forwardAnimating && self.audioLayers.count > 0) { for (SVGAAudioLayer *layer in self.audioLayers) { - if (!self.audioPlaying && layer.audioItem.startFrame >= self.currentFrame) { + if (!layer.audioPlaying && layer.audioItem.startFrame <= self.currentFrame && self.currentFrame <= layer.audioItem.endFrame) { [layer.audioPlayer setCurrentTime:(NSTimeInterval)(layer.audioItem.startTime / 1000)]; [layer.audioPlayer play]; - self.audioPlaying = YES; + layer.audioPlaying = YES; } - if (self.audioPlaying && layer.audioItem.endFrame <= self.currentFrame) { + if (layer.audioPlaying && layer.audioItem.endFrame <= self.currentFrame) { [layer.audioPlayer stop]; - self.audioPlaying = NO; + layer.audioPlaying = NO; } } }