Я хочу, чтобы иметь возможность транслировать видео в реальном времени с устройства iOS на сервер. Я попытался использовать AVCaptureOutput
, который фиксирует каждый кадр как CMSampleBuffer
и добавляет его с помощью AVAssetWriter
, но я не знаю, когда и как взять входные данные из файла и отправить его на сервер. Как его отформатировать? Как узнать, когда его отправить?Как можно транслировать видеоизображение с устройства iOS на сервер?
ответ
Хотя я не передаю вам какой-либо код, я разделяю с вами свою логику, что я сделал в одном из своих приложений.
Первый способ (простой): Существует множество недорогих сторонних библиотек, доступных для вашего использования.
Второй способ (Твердая один): Создать небольшой кусок видео для примера 2sec или менее, держать их в очереди и загрузить его на сервер (не используйте afnetworking
или http
метод это будет замедлять процесс используйте какой-либо чат-сервер, например node.js
или другие). И сохраните один текстовый файл или запись db, где вы сохраните дорожку файла chunk и его последовательности. И как только ваш первый кусок будет загружен, вы можете использовать ffmpg
, чтобы сделать видео из реального фрагмента, тем больше фрагментов, которые вы добавили в основной видеофайл, и если вы воспроизводите фактическое видео на устройстве, вам не нужно делать любая модификация автоматически будет извлекать новую часть после ее изменения на сервере.
Thank you. Надеюсь, это поможет вам.
Кажется, как это делают большинство широкомасштабных трансляций, просто продолжайте отправлять куски данных на сервер, а сервер перебрасывает их обратно другим клиентам, где они будут собраны вместе. – James111
Да, но в моем случае мы собрали эти куски на сервере, а не на устройстве. Поскольку очень сложно вывести эти куски на основное видео на устройстве iOS, и если мы будем играть за ними один за другим, есть небольшое изменение в кадре между кусками, и это было очень заметно. – souvickcse
Имеет смысл! Думаю, вы могли бы сделать это в любом случае? – James111
Для этой цели существует множество сторонних решений. В нашем приложении мы используем решение, предоставленное http://www.emoze.com/, и оно работает хорошо (но оно стоит, и вам нужно будет связаться с ним через их сайт, чтобы получить пакет) –
Возможно, длинный снимок, но в iOS 9 Apple представила что-то под названием ReplayKit, а в iOS 10 они объявили о поддержке прямой трансляции в ReplayKit. Я не использовал это сам, поэтому я мало что знаю об этом, но, возможно, это может быть полезно для вас. – pbodsk