Как включить запись потока?

Собственно сабж. Хочу чтобы писалось в файл на сервере, пусть в том формате что есть (.webm если поток VP8 или .mp4 если H264), так чтоб ничего не перекодировать и не жрать проц. Именно на уровне отдельного потока, а не все подряд. Чем это вызывается?

Спасибо!
 

Max

Administrator
Staff member
Добрый день.

Чтобы включить запись потока, нужно на стороне JavaScript передать параметр record=true.
Пример
https://demo.flashphoner.com/client2/examples/demo/streaming/stream_recording/recording.html
https://demo.flashphoner.com/client2/examples/demo/streaming/stream_recording/recording.js
Code:
function publishStream(session) {
    var streamName = $('#url').val().split('/')[3];
    session.createStream({
        name: streamName,
        display: localVideo,
        record: true,
        receiveVideo: false,
        receiveAudio: false
    }).on(STREAM_STATUS.PUBLISHING, function(stream) {
        setStatus(stream.status());
        onStarted(stream);
    }).on(STREAM_STATUS.UNPUBLISHED, function(stream) {
        setStatus(stream.status());
        showDownloadLink(stream.getRecordInfo());
        onStopped();
    }).on(STREAM_STATUS.FAILED, function(stream) {
        setStatus(stream.status(), stream.getInfo());
        showDownloadLink(stream.getRecordInfo());
        onStopped();
    }).publish();
}
Хочу чтобы писалось в файл на сервере, пусть в том формате что есть (.webm если поток VP8 или .mp4 если H264), так чтоб ничего не перекодировать и не жрать проц.
webM записывается с кодеками VP8 и Vorbis
т.е. видео VP8 не транскодируется
а аудио транскодируется из Opus в Vorbis

mp4 записывается с кодеками H.264 и AAC
т.е. видео H.264 не транскодируется
а аудио транскодируется из Opus в AAC

Таким образом при записи WebRTC потока в любом случае будет аудио транскодинг
Opus > Vorbis
или Opus > AAC
 
Спасибо!

Но это я нашёл сам... бида в моем случае в том, что поток не отсылается с клиента, он отсылается с ffmpeg на сервере (если помните мой use case, я объединяю несколько потоков в один, шлю его прямо с сервера на WCS по rtmp с ffmpeg-а, и играю по webrtc в клиентах - это всё работает прекрасно). Вот теперь мне захотелось этот поток ещё и записать. Как?

Если никак, то как можно включить запись просто всех входящих потоков вообще? Я потом по крону буду удалять все не обновлявшиеся скажем 5 минут, а те что мне нужно - после закрытия копировать отдельно куда мне надо.

Перекодирование аудио - ок, аудио это полная фигня, не страшно.
 

Max

Administrator
Staff member
Можно включить запись только для RTMP потоков настройкой:
Code:
record_flash_published_streams=true
в WCS_HOME/conf/flashphoner.properties
Будут записываться только RTMP потоки и складываться в папку WCS_HOME/records
WebRTC потоки записываться не будут.
 
Top