Поток Akamai Token Protection не может воспроизводиться в IOS

Я разработчик в IpTV. Мы разработали наше приложение для Android и теперь хотим перейти на устройства IOS. Akamai это наш CDN. На данный момент у нас есть простое приложение IOS, которое может воспроизводить потоки HLS. Мы можем перемещаться по каждому каналу, и все потоки воспроизводятся правильно. Для защиты наших потоков мы планировали использовать токен. Мы уже внедрили токен на Android, но сейчас у меня возникают трудности с IOS. Потоки, защищенные токеном, не воспроизводятся, экран остается черным.

Вот пример моего потока

http://this_is_my_stream_protected_with_token.m3u8/?__token__=exp=1432902926~acl= токен = exp = 1432902926 ~ acl = *~hmac=1e1d2afa7e7fbca72b0da6f5820ba1063446631e75fea80093c8183b619c0acc

Если я пытаюсь воспроизвести этот поток в моем приложении, экран остается черным с другой стороны, если я открываю его с помощью VLC или проигрывателя в веб- браузере ( http://www.flashls.org/latest/examples/chromeless/), он воспроизводится правильно.

Я создал функцию, которая делает http-запрос по этой ссылке, и ответ сервера:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=1629884,CODECS="avc1.77.31,mp4a.40.2",RESOLUTION=640x360
 chunklist.m3u8?__token__=exp%3D1432902926%7Eacl%3D*%7Ehmac%3D1e1d2afa7e7fbca72b0da6f5820ba1063446631e75fea80093c8183b619c0acc

Чтобы мое приложение правильно генерировало токен, я сделал его жестко закодированным, и у меня все еще остается та же проблема.

Поскольку это не проблема Akamai и не проблема генерации токенов, это заставляет меня поверить, что, возможно, мне нужно как-то кодировать поток в проигрывателе. Я везде читал об этой проблеме и до сих пор не могу найти рабочее решение

Вот мой код игрока:

    var param = ["auth":encryption.Token()] as Dictionary<String,String>;
            WebHelper().httpPostNSString(currentChannel.channelTokenUrl, params: param, consumeData: { (nsstring) -> () in

               //this is a custom method. it makes a post HttpRequest. It takes Token Url path and Dictionary with parameters and it returns the respnse data converted to String.

                token = nsstring;
                _URL_ += token;
                _URL_ = _URL_.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet());

               //remove spaces just in case (this is a 'MUST' in Android)

                var address = "http://this_is_my_stream_protected_with_token.m3u8?__token__=exp=1432902926~acl=*~hmac=1e1d2afa7e7fbca72b0da6f5820ba1063446631e75fea80093c8183b619c0acc"

                let url = NSURL(string: address)

                self.moviePlayer = MPMoviePlayerController(contentURL: url)
                self.moviePlayer?.controlStyle = MPMovieControlStyle.None;

                if(self.db.select.getStringValue(forKey: self.db.STRING_VALUE_CURRENT_CHANNEL) == nil){
                    self.db.insert.CoreData_Insert(value: "-1", coreDataKey: self.db.STRING_VALUE_CURRENT_CHANNEL)
                }

                Logs().sendHit(currentChannel.channelNumber, accessway: self.access_way, lastchannel: self.db.select.getStringValue(forKey: self.db.STRING_VALUE_CURRENT_CHANNEL).value, username: self.db.select.getStringValue(forKey: self.db.STRING_VALUE_USERNAME).value);

                self.db.delete.deleteEntityFromCore(entityName: "StringValue", field_Name: "key", field_Value: self.db.STRING_VALUE_CURRENT_CHANNEL);

                self.db.insert.CoreData_Insert(value: currentChannel.channelNumber, coreDataKey: self.db.STRING_VALUE_CURRENT_CHANNEL);

//we save some data and than proceed to play selected channel.

                if let player = self.moviePlayer{

                    //save the new channel

                    player.view.frame = self.view.bounds
                    player.prepareToPlay()
                    player.scalingMode = .AspectFill
                    self.view.addSubview(player.view)
                    self.view.bringSubviewToFront(self.two_way_channel); 
                    player.play();

                    //send hits
                }
            })

Благодарю вас

0 ответов

Другие вопросы по тегам