Я хочу получать разные видеопотоки в плеере iOS

#ios #m3u8

#iOS #m3u8

Вопрос:

Я использую M3U8Parser, но во время выполнения получаю исключение.

 NSString *plainString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:amp;error];
infolist = [M3U8Parser m3u8SegmentInfoListFromPlanString:plainString];
 

После infolist я получаю исключение.

 reason: '-[__NSCFString substringWithRange:]: Range {10, 9223372036854775797} out of bounds; string length 36'
 

Пожалуйста, помогите!

Комментарии:

1. Поместите точки останова в метод m3u8SegementInfoListValue NSString m3u8.h файл, так как я предполагаю, что вы используете github.com/0dayZh/M3U8Kit ?), и проверьте, где именно он выходит из строя.

Ответ №1:

Вам нужно внести некоторые изменения в NSString m3u8.m:

 if(NSNotFound != bandwidthRange.location) {
        NSString *value;
    // issue fixed
                if (commaRange.length == 0)
                {
                    value = [substring substringFromIndex:10];

                }
                else
                {
                    value = [substring substringWithRange:NSMakeRange(bandwidthRange.length 1, commaRange.location - (bandwidthRange.length 1))];
                }
        [params setValue:value forKey:keyM3U8SegmentBandwidth];
    }
 

На данный момент я жестко запрограммировал значение, которое вы можете изменить в соответствии с вашими требованиями.