ここにあるこのコードを使用して mp3 ファイルを提供しています。
私のmp3はすぐに再生を開始し、現在の時間などを再生しますが、期間がわかりません。
ファイルに直接リンクする場合、私はそれを取得します。
これが私のIOSコードです:
-(void)initAVPlayer{
NSString *link = @"<link go php file>";
NSURL *url = [NSURL URLWithString:link];
AVURLAsset *asset = [AVURLAsset assetWithURL: url];
Float64 duration = CMTimeGetSeconds(asset.duration); // nothing here
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset];
avPlayer = [[AVPlayer alloc] initWithPlayerItem:playerItem];
CMTime interval = CMTimeMake(20, 1000);
__unsafe_unretained typeof(self) weakSelf = self;
playbackObserver = [avPlayer addPeriodicTimeObserverForInterval:interval queue:dispatch_get_current_queue() usingBlock:^(CMTime time) {
[weakSelf updatePlayerValues];
}];
playButton.enabled = NO;
[avPlayer play];
}
-(void)updatePlayerValues{
CMTime duration = [[[[[avPlayer.currentItem tracks] objectAtIndex:0] assetTrack]asset]duration]; // nothing here
CMTime endTime = CMTimeConvertScale (duration, avPlayer.currentTime.timescale, kCMTimeRoundingMethod_RoundHalfAwayFromZero);
if (CMTimeCompare(endTime, kCMTimeZero) != 0) {
// do some stuff.
}
}
私はそれが私のphpコードに関係していると推測しています。
前もって感謝します。
編集: HTTP ヘッダーは次のとおりです。
Array(
[0] => HTTP/1.1 200 OK
[1] => Date: Fri, 04 Oct 2013 19:30:26 GMT
[2] => Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8y DAV/2 PHP/5.3.6
[3] => X-Powered-By: PHP/5.3.6
[4] => Content-Disposition: inline; filename="Radio head beat.mp3"
[5] => Pragma: no-cache
[6] => Content-Length: 1846251
[7] => Connection: close
[8] => Content-Type: audio/mpeg
)