Можно ли кодировать вещательные сэмплы в файл 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 рекомендует для прямой трансляции?
1 ответ
Отвечая на мой вопрос.
- Используйте AVAssetWriter для создания последовательности файлов mp4.
- При чтении файлов для записи в сокет используйте 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 и вот что: что на самом деле должен делать делать OptimizeForNetworkUse?