...
9. Опубликован поток от Bob
Объединение записанных потоков при помощи ffmpeg
Файлы записей потоков могут быть объединены при помощи ffmpeg с сохранением хронологического порядка. Для этого при создании потока при помощи метода setTimeShift() указывается его сдвиг относительно времени создания комнаты, по умолчанию:
Code Block | ||||
---|---|---|---|---|
| ||||
stream.setTimeShift(new Date().getTime() - room.getCreateDate().getTime()); |
Данным методом можно воспользоваться из клиентского приложения.
Записанные таким образом файлы потоков объединяются командой (пример для двух участников)
Code Block | ||||
---|---|---|---|---|
| ||||
ffmpeg -i stream1.mp4 -i stream2.mp4 -filter_complex "[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid];[0:a][1:a]amerge[a]" -map [vid] -map "[a]" -ac 2 -strict -2 -c:v libx264 -crf 23 -preset veryfast output.mp4
|
Здесь
- stream1 - поток первого участника
- stream2 - поток второго участника
Для того, чтобы объединить файлы, полученные в ходе тестирования, введите команду:
Code Block | ||||
---|---|---|---|---|
| ||||
ffmpeg -i stream-34296a60-7b36-11e8-bd9c-31aaed48935e-db8mp51bajcidn9qmcnda3967k.mp4 -i stream-5aeb2351-7b36-11e8-b398-b74e804508b2-g97j81cgrf8h1m7jl7184fa788.mp4 -filter_complex "[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid];[0:a][1:a]amerge[a]" -map [vid] -map "[a]" -ac 2 -strict -2 -c:v libx264 -crf 23 -preset veryfast output.mp4
|
Воспроизведите файл output.mp4: