80 lines
2.1 KiB
Objective-C
80 lines
2.1 KiB
Objective-C
//
|
|
// TTSPlaybackPipeline.h
|
|
// keyBoard
|
|
//
|
|
// Created by Mac on 2026/1/15.
|
|
//
|
|
|
|
#import "TTSServiceClient.h"
|
|
#import <Foundation/Foundation.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/// 播放管线代理
|
|
@protocol TTSPlaybackPipelineDelegate <NSObject>
|
|
@optional
|
|
/// 开始播放片段
|
|
- (void)pipelineDidStartSegment:(NSString *)segmentId
|
|
duration:(NSTimeInterval)duration;
|
|
/// 播放时间更新
|
|
- (void)pipelineDidUpdatePlaybackTime:(NSTimeInterval)time
|
|
segmentId:(NSString *)segmentId;
|
|
/// 片段播放完成
|
|
- (void)pipelineDidFinishSegment:(NSString *)segmentId;
|
|
/// 所有片段播放完成
|
|
- (void)pipelineDidFinishAllSegments;
|
|
/// 播放出错
|
|
- (void)pipelineDidFail:(NSError *)error;
|
|
@end
|
|
|
|
/// TTS 播放管线
|
|
/// 根据 payloadType 路由到对应播放器
|
|
@interface TTSPlaybackPipeline : NSObject
|
|
|
|
@property(nonatomic, weak) id<TTSPlaybackPipelineDelegate> delegate;
|
|
|
|
/// 是否正在播放
|
|
@property(nonatomic, assign, readonly, getter=isPlaying) BOOL playing;
|
|
|
|
/// 当前播放的片段 ID
|
|
@property(nonatomic, copy, readonly, nullable) NSString *currentSegmentId;
|
|
|
|
/// 启动管线
|
|
/// @param error 错误信息
|
|
/// @return 是否启动成功
|
|
- (BOOL)start:(NSError **)error;
|
|
|
|
/// 停止管线(立即停止,用于打断)
|
|
- (void)stop;
|
|
|
|
/// 入队 URL 播放
|
|
/// @param url 音频 URL
|
|
/// @param segmentId 片段 ID
|
|
- (void)enqueueURL:(NSURL *)url segmentId:(NSString *)segmentId;
|
|
|
|
/// 入队音频数据块
|
|
/// @param chunk 音频数据
|
|
/// @param type 数据类型
|
|
/// @param segmentId 片段 ID
|
|
- (void)enqueueChunk:(NSData *)chunk
|
|
payloadType:(TTSPayloadType)type
|
|
segmentId:(NSString *)segmentId;
|
|
|
|
/// 标记片段数据完成(用于流式模式)
|
|
/// @param segmentId 片段 ID
|
|
- (void)markSegmentComplete:(NSString *)segmentId;
|
|
|
|
/// 获取片段的当前播放时间
|
|
/// @param segmentId 片段 ID
|
|
/// @return 当前时间(秒),如果未在播放则返回 0
|
|
- (NSTimeInterval)currentTimeForSegment:(NSString *)segmentId;
|
|
|
|
/// 获取片段的总时长
|
|
/// @param segmentId 片段 ID
|
|
/// @return 总时长(秒)
|
|
- (NSTimeInterval)durationForSegment:(NSString *)segmentId;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|