Можно ли кодировать образцы вещания в файл MPEG-ts или fmp4 с помощью AVAssetWriter?

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

Нашел демо, которое делает то же самое - http://blog.denivip.ru/index.php/2017/01/live-streaming-on-ios/?lang=en, но не использует AVAssetWriter.

Люди также предлагали использовать библиотеку bento4, но я хочу иметь возможность делать это программно, без создания нового процесса и без задержки, связанной с созданием нового файла, и с использованием AVAssetWriter.

Если это невозможно, почему в IOS нет встроенной поддержки для создания этих файлов с помощью AVAssetWriter с использованием образцов?

Является ли RTSP единственным вариантом, который Apple рекомендует для прямой трансляции?


person user3911119    schedule 24.07.2018    source источник


Ответы (1)


Отвечая на мой вопрос.

  1. Используйте AVAssetWriter для создания последовательности файлов mp4.
  2. При чтении файлов для записи в сокет используйте qt-faststart для создания потоковой версии файла mp4. Это эквивалент Java - https://github.com/ypresto/qtfaststart-java/tree/master/src/main/java/net/ypresto/qtfaststart

Похоже, ios нельзя попросить сделать это.

РЕДАКТИРОВАТЬ № 1: К сожалению, многие файлы mp4, похоже, не имеют атома moov в конце. Итак, вернемся к исходной точке. Есть ли способ заставить AVAssetWriter всегда записывать атом moov, по крайней мере, в конце, если не в начале?

РЕДАКТИРОВАТЬ № 2: Виола! Похоже, Apple поддерживает эту функцию. См. это: https://developer.apple.com/documentation/avfoundation/avassetwriter/1389811-shouldoptimizefornetworkuse?language=objc и это: Что означает shouldOptimizeForNetworkUse на самом деле?

person user3911119    schedule 24.07.2018