3
AVURLAsset
의 비디오 트랙의 자연적인 크기를 얻으려고합니다. 자산 tracks
을 loadValuesAsynchronouslyForKeys:completionHandler:
으로로드합니다. 완료 처리기에서 상태가 AVKeyValueStatusLoaded
일 때 asset.tracks
을 보면 비어 있습니다. 나는 적어도 오디오와 비디오 트랙을 찾을 것으로 기대하고있다. 트랙 배열이 비어있는 이유는 무엇입니까?로드 후 AVURLAsset의 트랙 배열이 비어있는 이유는 무엇입니까?
#import <AVFoundation/AVFoundation.h>
int main(int argc, char *argv[])
{
__block BOOL loaded = NO;
AVURLAsset *asset;
@autoreleasepool
{
NSURL *url = [NSURL URLWithString:@"https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8"];
asset = [AVURLAsset URLAssetWithURL:url options:nil];
[asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler:^{
loaded = YES;
dispatch_async(dispatch_get_main_queue(), ^{
NSError *error = nil;
AVKeyValueStatus status = [asset statusOfValueForKey:@"tracks" error:&error];
if (status == AVKeyValueStatusLoaded)
NSLog(@"asset.tracks (%ld): %@", [asset.tracks count], asset.tracks);
else
NSLog(@"error (%ld): %@", status, error);
});
}];
}
while (!loaded)
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
return 0;
}
산 사자에 10.8.1 로그이이 코드를 실행 : 어떤 사람들은 내가 트랙 인해를 얻을 수 있다는 것을 나에게 지적
asset.tracks (0): (
)
UPDATE를 여기
내 코드입니다 HTTP 라이브 스트리밍 URL을 사용하고 있습니다. 따라서 현재 재생중인 비디오의 크기를 얻으려면 트랙을 사용하거나 사용하지 않는 것이 좋습니다.
가 @oxced : 나는 플레이어의 현재의 비트 전송률을 얻을합니다. 어쨌든 HLS로 그렇게 할 것입니까? –
@ 0xced :이 문제는 OSX에서만 발생합니까? iOS에서이 문제가 발생하지 않습니다. –
봇 OS X 10.11.4와 iOS 9.3에서이 코드를 시험해 보았는데 동일한 결과를 얻었습니다 : 0 트랙! – 0xced