ffmpeg может показать индикатор выполнения?

Таким образом, таблицы - это список событий, которые вы должны прослушать. 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)
}

Возможно, вам придется немного подправить способ передачи данных, но структура должна быть такой.

56
задан brian d foy 14 April 2009 в 23:06
поделиться

3 ответа

FFmpeg использует stdout для вывода медиа-данных и stderr для регистрации / информации о прогрессе. Вам просто нужно перенаправить stderr в файл или в stdin процесса, способного его обработать.

С оболочкой unix это что-то вроде:

ffmpeg {ffmpeg arguments} 2> logFile

или

ffmpeg {ffmpeg arguments} 2| processFFmpegLog

В любом случае, вы должны запустить ffmpeg как отдельный поток или процесс.

19
ответ дан mouviciel 26 November 2019 в 17:19
поделиться

Вызов системной функции php блокирует этот поток, поэтому вам нужно будет создать 1 HTTP-запрос для выполнения преобразования, и еще один опрос для чтения текстового файла, который генерируется.

Или, еще лучше, клиенты передают видео для конвертации, а затем другой процесс становится ответственным за выполнение конвертации. Таким образом, клиентское соединение не будет иметь тайм-аут при ожидании завершения системного вызова. Опрос производится так же, как указано выше.

1
ответ дан Allain Lalonde 26 November 2019 в 17:19
поделиться

Есть статья на русском языке, в которой описано, как решить вашу проблему.

Смысл в том, чтобы перехватить значение 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--
25
ответ дан 26 November 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: