HLS変換した動画でCDNで配信するのに時間がかかる
はじめに
現在開発中のiPhoneアプリからサーバにアップロードした動画(MP4)を、Amazon Elastic Transcoder で hlsに変換させ、Cloud FrontでそのiPhoneアプリに投稿した動画を表示させるようなアプリを作成しています。
問題
TableViewCellの上にAVPlayerViewを置き、アップロードし変換された動画のURL(CDN)を使って、再生しようとしているのですが、変換直後ですと再生ができず、一定時間経たなければ動画が再生されません
以下参考までにAVPlayerView.swiftのファイルと、TranscodeのParameterを載せます
class AVPlayerView: UIView {
var player: AVPlayer {
get {
let layer: AVPlayerLayer = self.layer as! AVPlayerLayer
return layer.player!
}
set(newValue) {
let layer: AVPlayerLayer = self.layer as! AVPlayerLayer
layer.player = newValue
}
}
// layerClassのoverride
override open class var layerClass: Swift.AnyClass {
return AVPlayerLayer.self
}
func setVideoMode(mode: String) {
let layer: AVPlayerLayer = self.layer as! AVPlayerLayer
layer.videoGravity = mode
}
}
Elastic Transcoder
var params = {
PipelineId: pipelineId,
OutputKeyPrefix: 'movies/',
Input: {
Key: inputKey,
FrameRate: 'auto',
Resolution: 'auto',
AspectRatio: 'auto',
Interlaced: 'auto',
Container: 'auto'
},
Outputs: [
/** to HLS transcoder **/
{
Key: outPutKey,
ThumbnailPattern: '',
PresetId: '1351620000001-200030', //HLS v3 400k/s (1351620000001-200055) //HLS v3 (Apple HTTP Live Streaming)、2 メガビット/秒 : 1351620000001-200010
SegmentDuration: '10',
Rotate: 'auto'
},
]
};
試したこと
アップロードした直後に、URLをSafariから開くと、すぐに再生できたり、少し時間が経つまで「Access Denied」を返すことがあります。アプリは一貫して、2~3分くらい立たなければ、動画が再生されません。