Потоковая передача HLS не работает, если в имени файла .TS есть пробелы - PullRequest
0 голосов
/ 27 августа 2018

Я работаю над внедрением HLS в приложении iOS, но могу воспроизвести большинство URL-адресов. Хотя некоторые URL-адреса файла Master Index, URL-адреса дочернего индекса и URL-адреса файла .ts содержат пробелы, Avplayer не может воспроизводиться, если в URL есть пробелы.

Я могу кодировать URL-адрес файла основного индекса, но как заставить AVPlayer кодировать URL-адреса файлов дочернего индекса и URL-файла .ts?

Основной список воспроизведения URL выглядит примерно так (до кодирования):

https://cfsigned.xxxxxxxxxxxx.com/MP4/default/Project_Management/Introduction_to_Project_Management/Lesson 02 - Методы управления проектами - Обзор / 2.003_ Методы выбора проектов.m3u8

Ниже приведен основной список воспроизведения:

#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0",NAME="Default",AUTOSELECT=YES,DEFAULT=YES,URI="audio/2.003_Project Selection     Techniques1351620000001-200071_m4a_v4.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10152000,CODECS="avc1.42001e",URI="480/2.003_Project Selection     Techniques1351620000001-200055_mp4_iframe.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=13806000,CODECS="avc1.42001e",URI="720/2.003_Project Selection     Techniques1351620000001-200045_mp4_iframe.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=16559000,CODECS="avc1.4d001e",URI="1080/2.003_Project Selection    Techniques1351620000001-200035_mp4_iframe.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=24004000,CODECS="avc1.4d001f",URI="1080/2.003_Project Selection    Techniques1351620000001-200025_mp4_iframe.m3u8"

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=261000,RESOLUTION=400x224,CODECS="avc1.42001e,mp4a.40.5",AUDIO="audio-0"
480/2.003_Project Selection Techniques1351620000001-200055_mp4_v4.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=307000,RESOLUTION=480x270,CODECS="avc1.42001e,mp4a.40.5",AUDIO="audio-0"
720/2.003_Project Selection Techniques1351620000001-200045_mp4_v4.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=382000,RESOLUTION=640x360,CODECS="avc1.4d001e,mp4a.40.5",AUDIO="audio-0"
1080/2.003_Project Selection Techniques1351620000001-200035_mp4_v4.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=613000,RESOLUTION=960x540,CODECS="avc1.4d001f,mp4a.40.5",AUDIO="audio-0"
1080/2.003_Project Selection Techniques1351620000001-200025_mp4_v4.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=72000,CODECS="mp4a.40.5",AUDIO="audio-0"
audio/2.003_Project Selection Techniques1351620000001-200071_m4a_v4.m3u8

Содержимое файла индекса 1-го дочернего элемента: 480 / 2.003_Техника выбора проектов1351620000001-200055_mp4_v4.m3u8

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:13
#EXTINF:12.0,
#EXT-X-BYTERANGE:208868@0
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:11.999999999999998,
#EXT-X-BYTERANGE:149084@208868
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.0,
#EXT-X-BYTERANGE:149084@357952
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.0,
#EXT-X-BYTERANGE:183676@507036
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.0,
#EXT-X-BYTERANGE:191384@690712
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.000000000000007,
#EXT-X-BYTERANGE:186872@882096
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.0,
#EXT-X-BYTERANGE:218268@1068968
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.0,
#EXT-X-BYTERANGE:283692@1287236
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.0,
#EXT-X-BYTERANGE:261696@1570928
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:12.0,
#EXT-X-BYTERANGE:245716@1832624
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXTINF:11.900000000000006,
#EXT-X-BYTERANGE:240640@2078340
2.003_Project Selection Techniques1351620000001-200055_mp4.ts
#EXT-X-ENDLIST

Как видите, в имени файла .ts есть пробелы.

Одним из решений является удаление / кодирование пробелов при создании файлов списка воспроизведения.

Но это решение сейчас невозможно из-за некоторых внутренних проблем.

PS: на Android все работает нормально только на ios не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...