diff --git a/iOS/BDAlphaPlayer/Classes/BDAlphaPlayerMetalView.m b/iOS/BDAlphaPlayer/Classes/BDAlphaPlayerMetalView.m
index a5f95f0..7fb677f 100644
--- a/iOS/BDAlphaPlayer/Classes/BDAlphaPlayerMetalView.m
+++ b/iOS/BDAlphaPlayer/Classes/BDAlphaPlayerMetalView.m
@@ -29,6 +29,8 @@ @interface BDAlphaPlayerMetalView ()
@property (atomic, assign) BOOL hasDestroyed;
+@property (nonatomic, strong) AVPlayer *audioPlayer;
+
@end
@implementation BDAlphaPlayerMetalView
@@ -141,6 +143,16 @@ - (void)play
[self renderOutput:output resourceModel:self.model completion:^{
[weakSelf renderCompletion];
}];
+
+ // 播放音频
+ if (output.audioItem) {
+ AVAudioSession *session = [AVAudioSession sharedInstance];
+ [session setCategory:AVAudioSessionCategoryPlayback error:nil];
+ [session setActive:YES error:nil];
+
+ self.audioPlayer = [[AVPlayer alloc] initWithPlayerItem:output.audioItem];
+ [self.audioPlayer play];
+ }
}
- (void)renderCompletion
diff --git a/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.h b/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.h
index 47626e6..647b5a5 100644
--- a/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.h
+++ b/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.h
@@ -31,6 +31,8 @@ typedef NS_ENUM(NSUInteger, BDAlphaPlayerAssetReaderOutputErrorCode) {
@property (nonatomic, assign, readonly) CGSize videoSize;
+@property (nonatomic, strong, readonly) AVPlayerItem *audioItem;
+
- (BOOL)hasNextSampleBuffer;
- (CMSampleBufferRef const _Nullable)copyNextSampleBuffer;
diff --git a/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.mm b/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.mm
index e85b6b4..0359ee9 100644
--- a/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.mm
+++ b/iOS/BDAlphaPlayer/Classes/Reader/BDAlphaPlayerAssetReaderOutput.mm
@@ -106,6 +106,14 @@ - (void)setupWithURL:(NSURL *)url error:(NSError * _Nullable __autoreleasing * _
return;
}
+ // 提取音轨
+ NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
+ AVAssetTrack *audioTrack = [audioTracks firstObject];
+ if (audioTrack) {
+ // 存在音轨,转成AVPlayerItem
+ _audioItem = [AVPlayerItem playerItemWithAsset:audioTrack.asset];
+ }
+
NSArray *videoTracks = [asset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *videoTrack = [videoTracks firstObject];
if (!videoTrack) {
diff --git a/iOS/Example/BDAlphaPlayerDemo/BDAlphaPlayerDemo/Info.plist b/iOS/Example/BDAlphaPlayerDemo/BDAlphaPlayerDemo/Info.plist
index 72bf2c4..1993c7f 100644
--- a/iOS/Example/BDAlphaPlayerDemo/BDAlphaPlayerDemo/Info.plist
+++ b/iOS/Example/BDAlphaPlayerDemo/BDAlphaPlayerDemo/Info.plist
@@ -20,25 +20,6 @@
1
LSRequiresIPhoneOS
- UIApplicationSceneManifest
-
- UIApplicationSupportsMultipleScenes
-
- UISceneConfigurations
-
- UIWindowSceneSessionRoleApplication
-
-
- UISceneConfigurationName
- Default Configuration
- UISceneDelegateClassName
- SceneDelegate
- UISceneStoryboardFile
- Main
-
-
-
-
UIApplicationSupportsIndirectInputEvents
UILaunchStoryboardName
diff --git a/iOS/Example/BDAlphaPlayerDemo/Podfile.lock b/iOS/Example/BDAlphaPlayerDemo/Podfile.lock
index af61b61..bc34978 100644
--- a/iOS/Example/BDAlphaPlayerDemo/Podfile.lock
+++ b/iOS/Example/BDAlphaPlayerDemo/Podfile.lock
@@ -1,5 +1,5 @@
PODS:
- - BDAlphaPlayer (1.1.0)
+ - BDAlphaPlayer (1.2.0)
DEPENDENCIES:
- BDAlphaPlayer (from `../../../`)
@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
:path: "../../../"
SPEC CHECKSUMS:
- BDAlphaPlayer: 6ec0535dbbac6b089e94acb5559dcdf77dd1d5a8
+ BDAlphaPlayer: 8af2048ee8ef8c31a73a99f83882cf4242e89df0
PODFILE CHECKSUM: a2a7c83a00e25dc193359c91e412457a63e7fbad
-COCOAPODS: 1.8.4
+COCOAPODS: 1.10.1