| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // QGMP4Parser.h
- // Tencent is pleased to support the open source community by making vap available.
- //
- // Copyright (C) 2020 Tencent. All rights reserved.
- //
- // Licensed under the MIT License (the "License"); you may not use this file except in
- // compliance with the License. You may obtain a copy of the License at
- //
- // http://opensource.org/licenses/MIT
- //
- // Unless required by applicable law or agreed to in writing, software distributed under the License is
- // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- // either express or implied. See the License for the specific language governing permissions and
- // limitations under the License.
- #import <Foundation/Foundation.h>
- #import "QGMP4Box.h"
- @class QGMP4Parser;
- @protocol QGMP4ParserDelegate <NSObject>
- @optional
- - (void)didParseMP4Box:(QGMP4Box *)box parser:(QGMP4Parser *)parser;
- - (void)MP4FileDidFinishParse:(QGMP4Parser *)parser;
- @end
- @interface QGMP4Parser : NSObject
- @property (nonatomic, strong) QGMP4Box *rootBox;
- @property (nonatomic, strong) NSFileHandle *fileHandle;
- @property (nonatomic, weak) id<QGMP4ParserDelegate> delegate;
- - (instancetype)initWithFilePath:(NSString *)filePath;
- - (void)parse;
- - (NSData *)readDataForBox:(QGMP4Box *)box;
- - (NSInteger)readValue:(const char*)bytes length:(NSInteger)length;
- @end
- @interface QGMP4ParserProxy : NSObject
- - (instancetype)initWithFilePath:(NSString *)filePath;
- @property (nonatomic, assign) NSInteger picWidth; //视频宽度
- @property (nonatomic, assign) NSInteger picHeight; //视频高度
- @property (nonatomic, assign) NSInteger fps; //视频fps
- @property (nonatomic, assign) double duration; //视频时长
- @property (nonatomic, strong) NSData *spsData; //sps
- @property (nonatomic, strong) NSData *ppsData; //pps
- @property (nonatomic, strong) NSArray *videoSamples; //所有帧数据,包含了位置和大小等信息
- @property (nonatomic, strong) NSArray *videoSyncSampleIndexes; // 所有关键帧的index
- @property (nonatomic, strong) QGMP4Box *rootBox; //mp4文件根box
- @property (nonatomic, strong) QGMP4TrackBox *videoTrackBox; //视频track
- @property (nonatomic, strong) QGMP4TrackBox *audioTrackBox; //音频track
- /** vps */
- @property (nonatomic, strong) NSData *vpsData;
- /** 视频流编码器ID类型 */
- @property (nonatomic, assign) QGMP4VideoStreamCodecID videoCodecID;
- - (void)parse;
- - (NSData *)readPacketOfSample:(NSInteger)sampleIndex;
- - (NSData *)readDataOfBox:(QGMP4Box *)box length:(NSInteger)length offset:(NSInteger)offset;
- @end
|