Я пытаюсь собрать библиотеку с открытым исходным кодом, которая позволяет устройствам iOS воспроизводить файлы с неподдерживаемыми контейнерами, если поддерживаются форматы/кодеки дорожек. например: видеофайл Matroska (MKV) с видеодорожкой H264 и звуковой дорожкой AAC. Я делаю приложение, которое, безусловно, может использовать эту функциональность, и я уверен, что есть много других, которые выиграют от этого. Любая помощь, которую вы можете оказать (комментируя здесь или, что еще лучше, сотрудничая со мной), очень ценится. Вот где я нахожусь до сих пор:
Я провел небольшое исследование, пытаясь выяснить, как такие проигрыватели, как AVPlayerHD или Infuse, могут воспроизводить нестандартные контейнеры и при этом иметь аппаратное ускорение. Похоже, что они перекодируют небольшие фрагменты всего видеофайла и вместо этого воспроизводят их последовательно.
Это хорошее решение. Но если вы хотите передать это видео на Apple TV, все пойдет не так, как планировалось, поскольку видео на самом деле представляет собой набор небольших фрагментов, воспроизводимых в виде списка воспроизведения. На этом сайте есть гораздо больше информации, но по своей сути потоковое вещание на Apple TV — это, по сути, прогрессивная загрузка воспроизводимый файл MP4/MPV.
Я думаю, что что-то вроде потокового прокси - это путь. Что касается игровой стороны, я исследовал AVSampleBufferDisplayLayer (дополнительная информация здесь) как способ воспроизведения видеодорожки. Я еще не добрался до аудио. Все становится интереснее, когда вы думаете о стороне AirPlay: имея «контейнерный прокси», мы можем сделать так, чтобы любой файл выглядел так, как будто он имеет правильный контейнер без последствий перекодирования размера файла.
Похоже, что GStreamer может быть хорошей отправной точкой для прокси. Мне нужно прочитать об этом; Я никогда не использовал его раньше. Подходит ли этот подход для библиотеки, которую можно использовать для приложений App Store?
Спасибо!