Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_25606643
ijkplayer
提交
80f507eb
I
ijkplayer
项目概览
qq_25606643
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
ijkplayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
80f507eb
编写于
12月 30, 2014
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ios: retrieve meta
上级
1313cf83
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
145 addition
and
2 deletion
+145
-2
ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj/project.pbxproj
ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj/project.pbxproj
+6
-0
ios/IJKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerController.h
...JKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerController.h
+33
-0
ios/IJKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerController.m
...JKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerController.m
+105
-1
ios/IJKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerDef.h
ios/IJKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerDef.h
+1
-1
未找到文件。
ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj/project.pbxproj
浏览文件 @
80f507eb
...
@@ -61,6 +61,7 @@
...
@@ -61,6 +61,7 @@
E6F727BD17F40C360043623F
/* IJKMPMoviePlayerController.h in CopyFiles */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E66F8DBF17EEC65200354D80
/* IJKMPMoviePlayerController.h */
;
};
E6F727BD17F40C360043623F
/* IJKMPMoviePlayerController.h in CopyFiles */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E66F8DBF17EEC65200354D80
/* IJKMPMoviePlayerController.h */
;
};
E6F727BE17F40C390043623F
/* IJKFFMoviePlayerController.h in CopyFiles */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E66F8DE517EFD9C300354D80
/* IJKFFMoviePlayerController.h */
;
};
E6F727BE17F40C390043623F
/* IJKFFMoviePlayerController.h in CopyFiles */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E66F8DE517EFD9C300354D80
/* IJKFFMoviePlayerController.h */
;
};
E6F727C217F7C9BA0043623F
/* IJKMediaPlayback.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E6F727C117F7C9B90043623F
/* IJKMediaPlayback.m */
;
};
E6F727C217F7C9BA0043623F
/* IJKMediaPlayback.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E6F727C117F7C9B90043623F
/* IJKMediaPlayback.m */
;
};
E6FAD9571A515CE300725002
/* ijkmeta.c in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E6FAD9551A515CE300725002
/* ijkmeta.c */
;
};
/* End PBXBuildFile section */
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
/* Begin PBXCopyFilesBuildPhase section */
...
@@ -265,6 +266,8 @@
...
@@ -265,6 +266,8 @@
E6F727B917F2D9D30043623F
/* IJKFFMoviePlayerDef.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
IJKFFMoviePlayerDef.h
;
sourceTree
=
"<group>"
;
};
E6F727B917F2D9D30043623F
/* IJKFFMoviePlayerDef.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
IJKFFMoviePlayerDef.h
;
sourceTree
=
"<group>"
;
};
E6F727BA17F2D9D30043623F
/* IJKFFMoviePlayerDef.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
IJKFFMoviePlayerDef.m
;
sourceTree
=
"<group>"
;
};
E6F727BA17F2D9D30043623F
/* IJKFFMoviePlayerDef.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
IJKFFMoviePlayerDef.m
;
sourceTree
=
"<group>"
;
};
E6F727C117F7C9B90043623F
/* IJKMediaPlayback.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
name
=
IJKMediaPlayback.m
;
path
=
IJKMediaPlayer/IJKMediaPlayback.m
;
sourceTree
=
"<group>"
;
};
E6F727C117F7C9B90043623F
/* IJKMediaPlayback.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
name
=
IJKMediaPlayback.m
;
path
=
IJKMediaPlayer/IJKMediaPlayback.m
;
sourceTree
=
"<group>"
;
};
E6FAD9551A515CE300725002
/* ijkmeta.c */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.c
;
path
=
ijkmeta.c
;
sourceTree
=
"<group>"
;
};
E6FAD9561A515CE300725002
/* ijkmeta.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
ijkmeta.h
;
sourceTree
=
"<group>"
;
};
/* End PBXFileReference section */
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
/* Begin PBXFrameworksBuildPhase section */
...
@@ -563,6 +566,8 @@
...
@@ -563,6 +566,8 @@
E6903FDE17EAFC6100CFD954
/* ff_ffplay_def.h */
,
E6903FDE17EAFC6100CFD954
/* ff_ffplay_def.h */
,
E6903FDB17EAFC6100CFD954
/* ff_ffplay.c */
,
E6903FDB17EAFC6100CFD954
/* ff_ffplay.c */
,
E6903FDC17EAFC6100CFD954
/* ff_ffplay.h */
,
E6903FDC17EAFC6100CFD954
/* ff_ffplay.h */
,
E6FAD9551A515CE300725002
/* ijkmeta.c */
,
E6FAD9561A515CE300725002
/* ijkmeta.h */
,
E66F8DEE17EFEA9400354D80
/* ijkplayer_internal.h */
,
E66F8DEE17EFEA9400354D80
/* ijkplayer_internal.h */
,
E66F8DEF17EFEA9400354D80
/* ijkplayer.c */
,
E66F8DEF17EFEA9400354D80
/* ijkplayer.c */
,
E66F8DF017EFEA9400354D80
/* ijkplayer.h */
,
E66F8DF017EFEA9400354D80
/* ijkplayer.h */
,
...
@@ -764,6 +769,7 @@
...
@@ -764,6 +769,7 @@
E6EE92B91878230C009EAB56
/* ijksdl_thread_ios.m in Sources */
,
E6EE92B91878230C009EAB56
/* ijksdl_thread_ios.m in Sources */
,
E66F8DC117EEC65200354D80
/* IJKMPMoviePlayerController.m in Sources */
,
E66F8DC117EEC65200354D80
/* IJKMPMoviePlayerController.m in Sources */
,
E67C4E0819D15EEA00415CEE
/* IJKAVMoviePlayerController.m in Sources */
,
E67C4E0819D15EEA00415CEE
/* IJKAVMoviePlayerController.m in Sources */
,
E6FAD9571A515CE300725002
/* ijkmeta.c in Sources */
,
E6EE92B81878230C009EAB56
/* ijksdl_aout_ios_audiounit.m in Sources */
,
E6EE92B81878230C009EAB56
/* ijksdl_aout_ios_audiounit.m in Sources */
,
E6EE92C21878236A009EAB56
/* IJKSDLAudioQueueController.m in Sources */
,
E6EE92C21878236A009EAB56
/* IJKSDLAudioQueueController.m in Sources */
,
E67B91BA1A3801E600717EA9
/* ffpipenode_ffplay_vout.c in Sources */
,
E67B91BA1A3801E600717EA9
/* ffpipenode_ffplay_vout.c in Sources */
,
...
...
ios/IJKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerController.h
浏览文件 @
80f507eb
...
@@ -23,6 +23,37 @@
...
@@ -23,6 +23,37 @@
#import "IJKMediaPlayback.h"
#import "IJKMediaPlayback.h"
#import "IJKFFOptions.h"
#import "IJKFFOptions.h"
// media meta
#define k_IJKM_KEY_FORMAT @"format"
#define k_IJKM_KEY_DURATION_US @"duration_us"
#define k_IJKM_KEY_START_US @"start_us"
#define k_IJKM_KEY_BITRATE @"bitrate"
// stream meta
#define k_IJKM_KEY_TYPE @"type"
#define k_IJKM_VAL_TYPE__VIDEO @"video"
#define k_IJKM_VAL_TYPE__AUDIO @"audio"
#define k_IJKM_VAL_TYPE__UNKNOWN @"unknown"
#define k_IJKM_KEY_CODEC_NAME @"codec_name"
#define k_IJKM_KEY_CODEC_PROFILE @"codec_profile"
#define k_IJKM_KEY_CODEC_LONG_NAME @"codec_long_name"
// stream: video
#define k_IJKM_KEY_WIDTH @"width"
#define k_IJKM_KEY_HEIGHT @"height"
#define k_IJKM_KEY_FPS_NUM @"fps_num"
#define k_IJKM_KEY_FPS_DEN @"fps_den"
#define k_IJKM_KEY_TBR_NUM @"tbr_num"
#define k_IJKM_KEY_TBR_DEN @"tbr_den"
#define k_IJKM_KEY_SAR_NUM @"sar_num"
#define k_IJKM_KEY_SAR_DEN @"sar_den"
// stream: audio
#define k_IJKM_KEY_SAMPLE_RATE @"sample_rate"
#define k_IJKM_KEY_CHANNEL_LAYOUT @"channel_layout"
#define kk_IJKM_KEY_STREAMS @"streams"
@interface
IJKFFMoviePlayerController
:
NSObject
<
IJKMediaPlayback
>
@interface
IJKFFMoviePlayerController
:
NSObject
<
IJKMediaPlayback
>
-
(
id
)
initWithContentURL
:(
NSURL
*
)
aUrl
-
(
id
)
initWithContentURL
:(
NSURL
*
)
aUrl
...
@@ -46,6 +77,8 @@
...
@@ -46,6 +77,8 @@
+
(
void
)
setLogReport
:(
BOOL
)
preferLogReport
;
+
(
void
)
setLogReport
:(
BOOL
)
preferLogReport
;
@property
(
nonatomic
,
readonly
)
CGFloat
fpsInMeta
;
@end
@end
#define IJK_FF_IO_TYPE_READ (1)
#define IJK_FF_IO_TYPE_READ (1)
...
...
ios/IJKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerController.m
浏览文件 @
80f507eb
...
@@ -30,6 +30,11 @@
...
@@ -30,6 +30,11 @@
#include "string.h"
#include "string.h"
@interface
IJKFFMoviePlayerController
()
<
IJKAudioSessionDelegate
>
@interface
IJKFFMoviePlayerController
()
<
IJKAudioSessionDelegate
>
@property
(
nonatomic
,
readonly
)
NSDictionary
*
mediaMeta
;
@property
(
nonatomic
,
readonly
)
NSDictionary
*
videoMeta
;
@property
(
nonatomic
,
readonly
)
NSDictionary
*
audioMeta
;
@end
@end
@implementation
IJKFFMoviePlayerController
{
@implementation
IJKFFMoviePlayerController
{
...
@@ -70,6 +75,10 @@
...
@@ -70,6 +75,10 @@
@synthesize
scalingMode
=
_scalingMode
;
@synthesize
scalingMode
=
_scalingMode
;
@synthesize
shouldAutoplay
=
_shouldAutoplay
;
@synthesize
shouldAutoplay
=
_shouldAutoplay
;
@synthesize
mediaMeta
=
_mediaMeta
;
@synthesize
videoMeta
=
_videoMeta
;
@synthesize
audioMeta
=
_audioMeta
;
#define FFP_IO_STAT_STEP (50 * 1024)
#define FFP_IO_STAT_STEP (50 * 1024)
// as an example
// as an example
...
@@ -161,6 +170,7 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
...
@@ -161,6 +170,7 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
// init media resource
// init media resource
_ffMrl
=
[[
IJKFFMrl
alloc
]
initWithMrl
:
aUrlString
];
_ffMrl
=
[[
IJKFFMrl
alloc
]
initWithMrl
:
aUrlString
];
_segmentResolver
=
segmentResolver
;
_segmentResolver
=
segmentResolver
;
_mediaMeta
=
[[
NSDictionary
alloc
]
init
];
// init player
// init player
_mediaPlayer
=
ijkmp_ios_create
(
media_player_msg_loop
);
_mediaPlayer
=
ijkmp_ios_create
(
media_player_msg_loop
);
...
@@ -410,6 +420,23 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
...
@@ -410,6 +420,23 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
return
nil
;
return
nil
;
}
}
inline
static
void
fillMetaInternal
(
NSMutableDictionary
*
meta
,
IjkMediaMeta
*
rawMeta
,
const
char
*
name
,
NSString
*
defaultValue
)
{
if
(
!
meta
||
!
rawMeta
||
!
name
)
return
;
NSString
*
key
=
[
NSString
stringWithUTF8String
:
name
];
char
*
value
=
ijkmeta_get_string_l
(
rawMeta
,
name
);
if
(
value
)
{
[
meta
setObject
:[
NSString
stringWithUTF8String
:
value
]
forKey
:
key
];
free
(
value
);
}
else
if
(
defaultValue
){
[
meta
setObject
:
defaultValue
forKey
:
key
];
}
else
{
[
meta
removeObjectForKey
:
key
];
}
}
-
(
void
)
postEvent
:
(
IJKFFMoviePlayerMessage
*
)
msg
-
(
void
)
postEvent
:
(
IJKFFMoviePlayerMessage
*
)
msg
{
{
if
(
!
msg
)
if
(
!
msg
)
...
@@ -436,9 +463,85 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
...
@@ -436,9 +463,85 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
@"error"
:
@
(
avmsg
->
arg1
)}];
@"error"
:
@
(
avmsg
->
arg1
)}];
break
;
break
;
}
}
case
FFP_MSG_PREPARED
:
case
FFP_MSG_PREPARED
:
{
NSLog
(
@"FFP_MSG_PREPARED:"
);
NSLog
(
@"FFP_MSG_PREPARED:"
);
IjkMediaMeta
*
rawMeta
=
ijkmp_get_meta_l
(
_mediaPlayer
);
if
(
rawMeta
)
{
ijkmeta_lock
(
rawMeta
);
NSMutableDictionary
*
newMediaMeta
=
[[
NSMutableDictionary
alloc
]
init
];
fillMetaInternal
(
newMediaMeta
,
rawMeta
,
IJKM_KEY_FORMAT
,
nil
);
fillMetaInternal
(
newMediaMeta
,
rawMeta
,
IJKM_KEY_DURATION_US
,
nil
);
fillMetaInternal
(
newMediaMeta
,
rawMeta
,
IJKM_KEY_START_US
,
nil
);
fillMetaInternal
(
newMediaMeta
,
rawMeta
,
IJKM_KEY_BITRATE
,
nil
);
fillMetaInternal
(
newMediaMeta
,
rawMeta
,
IJKM_KEY_VIDEO_STREAM
,
@"-1"
);
fillMetaInternal
(
newMediaMeta
,
rawMeta
,
IJKM_KEY_AUDIO_STREAM
,
@"-1"
);
int64_t
video_stream
=
ijkmeta_get_int64_l
(
rawMeta
,
IJKM_KEY_VIDEO_STREAM
,
-
1
);
int64_t
audio_stream
=
ijkmeta_get_int64_l
(
rawMeta
,
IJKM_KEY_AUDIO_STREAM
,
-
1
);
NSMutableArray
*
streams
=
[[
NSMutableArray
alloc
]
init
];
size_t
count
=
ijkmeta_get_children_count_l
(
rawMeta
);
for
(
size_t
i
=
0
;
i
<
count
;
++
i
)
{
IjkMediaMeta
*
streamRawMeta
=
ijkmeta_get_child_l
(
rawMeta
,
i
);
NSMutableDictionary
*
streamMeta
=
[[
NSMutableDictionary
alloc
]
init
];
if
(
streamRawMeta
)
{
fillMetaInternal
(
streamMeta
,
streamRawMeta
,
IJKM_KEY_TYPE
,
k_IJKM_VAL_TYPE__UNKNOWN
);
char
*
type
=
ijkmeta_get_string_l
(
rawMeta
,
IJKM_KEY_TYPE
);
if
(
type
)
{
fillMetaInternal
(
streamMeta
,
streamRawMeta
,
IJKM_KEY_CODEC_NAME
,
@""
);
fillMetaInternal
(
streamMeta
,
streamRawMeta
,
IJKM_KEY_CODEC_PROFILE
,
@""
);
if
(
0
==
strcmp
(
type
,
IJKM_VAL_TYPE__VIDEO
))
{
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_WIDTH
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_HEIGHT
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_FPS_NUM
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_FPS_DEN
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_TBR_NUM
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_TBR_DEN
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_SAR_NUM
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_SAR_DEN
,
@""
);
if
(
video_stream
>
0
&&
video_stream
==
i
)
{
_videoMeta
=
streamMeta
;
int64_t
fps_num
=
ijkmeta_get_int64_l
(
rawMeta
,
IJKM_KEY_FPS_NUM
,
0
);
int64_t
fps_den
=
ijkmeta_get_int64_l
(
rawMeta
,
IJKM_KEY_FPS_DEN
,
0
);
if
(
fps_num
>
0
&&
fps_den
>
0
)
{
_fpsInMeta
=
((
CGFloat
)(
fps_num
))
/
fps_den
;
NSLog
(
@"fps in meta %f
\n
"
,
_fpsInMeta
);
}
}
}
else
if
(
0
==
strcmp
(
type
,
IJKM_VAL_TYPE__AUDIO
))
{
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_SAMPLE_RATE
,
@""
);
fillMetaInternal
(
streamMeta
,
rawMeta
,
IJKM_KEY_CHANNEL_LAYOUT
,
@""
);
if
(
audio_stream
>
0
&&
audio_stream
==
i
)
{
_audioMeta
=
streamMeta
;
}
}
else
{
}
free
(
type
);
}
}
[
streams
addObject
:
streamMeta
];
}
[
newMediaMeta
setObject
:
streams
forKey
:
kk_IJKM_KEY_STREAMS
];
ijkmeta_unlock
(
rawMeta
);
_mediaMeta
=
newMediaMeta
;
}
_isPreparedToPlay
=
YES
;
_isPreparedToPlay
=
YES
;
[[
NSNotificationCenter
defaultCenter
]
postNotificationName
:
IJKMediaPlaybackIsPreparedToPlayDidChangeNotification
object
:
self
];
[[
NSNotificationCenter
defaultCenter
]
postNotificationName
:
IJKMediaPlaybackIsPreparedToPlayDidChangeNotification
object
:
self
];
...
@@ -450,6 +553,7 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
...
@@ -450,6 +553,7 @@ void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
object:
self
];
object:
self
];
break
;
break
;
}
case
FFP_MSG_COMPLETED
:
{
case
FFP_MSG_COMPLETED
:
{
[
self
setScreenOn
:
NO
];
[
self
setScreenOn
:
NO
];
...
...
ios/IJKMediaPlayer/IJKMediaPlayer/IJKFFMoviePlayerDef.h
浏览文件 @
80f507eb
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
#import <Foundation/Foundation.h>
#import <Foundation/Foundation.h>
#include "ijkplayer/ios/ijkplayer_ios.h"
#include "ijkplayer/ios/ijkplayer_ios.h"
#include "ijkplayer/ijkmeta.h"
struct
IJKSize
{
struct
IJKSize
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录