Таким образом, таблицы - это список событий, которые вы должны прослушать. conversationsList
и messagesList
являются особым случаем, потому что они двунаправлены (имеется в виду, что вы должны излучать их, а также получать их. Я понимаю их как цепочку. Вы будете излучать список бесед только тогда, когда вы подключены. Возможное решение:
var manager = SocketManager(socketURL: URL(string: "url")!, config: [.log(true), .compress,.path("path"),.connectParams(["authorization":"token"])])
var socket = manager.defaultSocket
socket.on("connected") {data, ack in
print("socket connected")
print(socket.status)
socket.emit("conversationsList", ["page": 1])
}
socket.on("conversationsList") {data, ack in
print("Conversations List received")
socket.emit("messagesList", ["conversation": "conversation_id", "page": 1])
print(data)
}
Возможно, вам придется немного подправить способ передачи данных, но структура должна быть такой.
FFmpeg использует stdout для вывода медиа-данных и stderr для регистрации / информации о прогрессе. Вам просто нужно перенаправить stderr в файл или в stdin процесса, способного его обработать.
С оболочкой unix это что-то вроде:
ffmpeg {ffmpeg arguments} 2> logFile
или
ffmpeg {ffmpeg arguments} 2| processFFmpegLog
В любом случае, вы должны запустить ffmpeg как отдельный поток или процесс.
Вызов системной функции php блокирует этот поток, поэтому вам нужно будет создать 1 HTTP-запрос для выполнения преобразования, и еще один опрос для чтения текстового файла, который генерируется.
Или, еще лучше, клиенты передают видео для конвертации, а затем другой процесс становится ответственным за выполнение конвертации. Таким образом, клиентское соединение не будет иметь тайм-аут при ожидании завершения системного вызова. Опрос производится так же, как указано выше.
Есть статья на русском языке, в которой описано, как решить вашу проблему.
Смысл в том, чтобы перехватить значение Duration
перед кодированием и перехватить значения time = ...
во время кодирования.
--skipped--
Duration: 00:00:24.9, start: 0.000000, bitrate: 331 kb/s
--skipped--
frame= 41 q=7.0 size= 116kB time=1.6 bitrate= 579.7kbits/s
frame= 78 q=12.0 size= 189kB time=3.1 bitrate= 497.2kbits/s
frame= 115 q=13.0 size= 254kB time=4.6 bitrate= 452.3kbits/s
--skipped--