MeiCam SDK For iOS  3.14.0
NvsMediaFileVideoRetriever.h
Go to the documentation of this file.
1 //================================================================================
2 //
3 // (c) Copyright Meishe Co. Ltd, 2019. All rights reserved.
4 //
5 // This code and information is provided "as is" without warranty of any kind,
6 // either expressed or implied, including but not limited to the implied
7 // warranties of merchantability and/or fitness for a particular purpose.
8 //
9 //--------------------------------------------------------------------------------
10 // Birth Date: Apr 16. 2019
11 // Author: Meishe video team
12 //================================================================================
13 #pragma once
14 
15 #import <Foundation/Foundation.h>
16 #import "NvsAVFileInfo.h"
17 
18 
19 //private final String TAG = "NvsMediaFileVideoRetriever";
20 
21 /*
22  * 无压缩数据收集器
23  * 这个接口可以在不同线程中使用。如果确定接口不使用了,请调用release()方法
24  * \warning 如果是网络素材,最好不要在UI线程调用,否则网络不好的时候可能会ANR!
25  */
26 
27 typedef enum {
36 
37 
38 //public static final int VIDEO_RETRIEVER_FLAG_ONE_FRAME_IN_SEGMENT = 1;
39 
40 /*
41  *数据收集器回调接口
42  */
44 
45 /* \brief 通知数据
46  * \param taskId 任何id
47  * \param data 存储解码的无压缩数据,格式为YUV420P,YUV 4:2:0 12bpp ( 3通道, 一个亮度通道, 另两个为U分量和V分量通道, 所有通道都是连续的 )
48  * \param width 解码无压缩数据中图像宽度, 这里的宽度指的是420P中Y平面的宽度
49  * \param height 解码无压缩数据中图像高度, 这里的高度指的是420P中Y平面的高度
50  * \param rotation 解码输出数据的显示方向
51  * \param videoFrameSize 每一帧无压缩数据大小,字节为单位。(考虑内存对齐,有可能比实际的大)
52  */
53 - (void)notifySengmentData:(int64_t)taskId data:(void *)data width:(int)width height:(int)height rotation:(int)rotation videoFrameSize:(int)videoFrameSize;
54 
55 /* \brief 通知数据
56  * \param taskId 任何id
57  * \param videoFrameInfo 视频帧数据信息
58  */
59 - (void)notifySengmentData:(int64_t)taskId videoFrameInfo:(NvsVideoFrameInfo *)videoFrameInfo;
60 
61 /* \brief 通知进度
62  * \param taskId 任何id
63  * \param progress 已经完成的进度(范围是0到1.0)
64  */
65 - (void)notifyProgress:(int64_t)taskId progress:(float)progress;
66 /* \brief 通知进度
67  * \param taskId 任何id
68  * \param errorType 错误类型,请参考:RETRIEVER_ERROR_xxxx
69  */
70 - (void)notifyFinsih:(int64_t)taskId errorType:(NvsMediaFileVideoRetrieverError)errorType;
71 
72 @end
73 
75 
76 @property (nonatomic, weak) id<NvsMediaFileVideoRetrieverDelegate> delegate;
77 
78 
79 - (void)close;
80 - (BOOL)isClosed;
81 - (NvsAVFileInfo*)getAVFileInfo:(NSString *)avFilePath;
82 
83 /* \brief 解码部分区域
84  * \param fromPositon 需要解码的起始位置单位是毫秒
85  * \param toPosition 需要解码的结束位置单位是毫秒
86  * \param costomHeight 解码输出数据的高度,如果小于0,输出的高度和原始大小一下,最大值不能大于2160
87  * \param grabInterval 解码输出数据的间隔时间,如果小于等于0,和原始视频的一直。
88  * \param flags 解码输出的标志,参考VIDEO_RETRIEVER_FLAG_xxxx
89  * \return 返回获取的当前解码任务的id
90  */
91 - (int64_t)decodeVideoSegment:(NSString *)srcFile
92  fromPosition:(int64_t)fromPosition
93  toPosition:(int64_t)toPosition
94  customHeight:(int)customHeight
95  grabInterval:(int)grabInterval
96  flags:(int)flags;
97 
98 /* \brief 解码部分区域
99  * \param fromPositon 需要解码的起始位置单位是毫秒
100  * \param toPosition 需要解码的结束位置单位是毫秒
101  * \param outputPixelFormat 解码输出的数据格式
102  * \param costomHeight 解码输出数据的高度,如果小于0,输出的高度和原始大小一下,最大值不能大于2160
103  * \param grabInterval 解码输出数据的间隔时间,如果小于等于0,和原始视频的一直。
104  * \param flags 解码输出的标志,参考VIDEO_RETRIEVER_FLAG_xxxx
105  * \return 返回获取的当前解码任务的id
106  */
107 - (int64_t)decodeVideoSegment:(NSString *)srcFile
108  fromPosition:(int64_t)fromPosition
109  toPosition:(int64_t)toPosition
110  outputPixelFormat:(NvsVideoFramePixelFormat)outputPixelFormat
111  customHeight:(int)customHeight
112  grabInterval:(int)grabInterval
113  flags:(int)flags;
114 
115 - (void)cancelTask:(int64_t)taskId;
116 
117 @end
-[NvsMediaFileVideoRetriever close]
void close()
NvsMediaFileVideoRetrieverError_Code_No_Error
@ NvsMediaFileVideoRetrieverError_Code_No_Error
no error
Definition: NvsMediaFileVideoRetriever.h:28
NvsMediaFileVideoRetrieverError_Code_No_Cancel
@ NvsMediaFileVideoRetrieverError_Code_No_Cancel
task is canceled
Definition: NvsMediaFileVideoRetriever.h:29
NvsVideoFrameInfo
Video frame information.
Definition: NvsCommonDef.h:446
NvsMediaFileVideoRetrieverError_Video_Decoding_Error
@ NvsMediaFileVideoRetrieverError_Video_Decoding_Error
video decode error
Definition: NvsMediaFileVideoRetriever.h:33
NvsAVFileInfo
Audio and video file information.
Definition: NvsAVFileInfo.h:34
NvsMediaFileVideoRetrieverError_Video_Encode_Setup_Error
@ NvsMediaFileVideoRetrieverError_Video_Encode_Setup_Error
video encoder setup error
Definition: NvsMediaFileVideoRetriever.h:30
NvsMediaFileVideoRetriever::delegate
id< NvsMediaFileVideoRetrieverDelegate > delegate
Definition: NvsMediaFileVideoRetriever.h:76
NvsVideoFramePixelFormat
NvsVideoFramePixelFormat
Video frame pixel format.
Definition: NvsCommonDef.h:187
NvsMediaFileVideoRetrieverError
NvsMediaFileVideoRetrieverError
Definition: NvsMediaFileVideoRetriever.h:27
NvsAVFileInfo.h
NvsMediaFileVideoRetrieverError_Video_Encoding_Error
@ NvsMediaFileVideoRetrieverError_Video_Encoding_Error
video encoder error
Definition: NvsMediaFileVideoRetriever.h:31
NVS_EXPORT
#define NVS_EXPORT
Definition: NvsCommonDef.h:20
NvsMediaFileVideoRetrieverDelegate-p
Definition: NvsMediaFileVideoRetriever.h:43
NvsMediaFileVideoRetrieverError_Video_Decoder_Error
@ NvsMediaFileVideoRetrieverError_Video_Decoder_Error
video decoder setup error
Definition: NvsMediaFileVideoRetriever.h:32
NvsMediaFileVideoRetrieverError_Unknown
@ NvsMediaFileVideoRetrieverError_Unknown
task has unknown error
Definition: NvsMediaFileVideoRetriever.h:34
NvsMediaFileVideoRetriever
Definition: NvsMediaFileVideoRetriever.h:75
-[NvsMediaFileVideoRetriever isClosed]
BOOL isClosed()