3

Я пытаюсь построить хромированное расширение, подобное хромовому. Я использую chrome.tabCapture для успешного запуска аудио/видеопотока. Как остановить захват экрана? Я хочу, чтобы кнопка останова, но я не уверен, что вызвать, чтобы остановить ее. Я могу остановить LocalMediaStream, но вкладка все еще захватывает и не позволяет начать новый захват, не закрывая вкладку. Любые предложения или, возможно, страница api, которую я, возможно, пропустил?Как остановить хром от захвата вкладки?

+0

Из документов: _ "Захват поддерживаются через страницу плавания в вкладку и останавливается, когда вкладка закрыта, или медиапоток закрывается расширением. "_ – Xan

+0

Пожалуйста, добавьте код, который вы используете для« остановки LocalMediaStream ». – Xan

+0

Actullay У меня тоже такая же проблема http: // stackoverflow. com/questions/34715357/how-to-stop-the-capture-mediastream-that-is-start-by-chrome-tabcapture-api-i, чтобы остановить localMediastream, мы должны использовать 'stream.stop()' но хром выдает ошибку, например, Uncaught TypeError: stream.stop не является функцией ' – Muthu

ответ

2

Попробуйте stream.getVideoTracks()[0].stop();, чтобы остановить захват экрана. А для записи потока пойманного с помощью chrome.tabCapture API, вы можете использовать RecordRTC.js

var video_constraints = { 
    mandatory: { 
     chromeMediaSource: 'tab' 
    } 
}; 
var constraints = { 
    audio: false, 
    video: true, 
    videoConstraints: video_constraints 
}; 

chrome.tabCapture.capture(constraints, function(stream) { 
    console.log(stream) 
    var options = { 
     type: 'video', 
     mimeType : 'video/webm', 
     // minimum time between pushing frames to Whammy (in milliseconds) 
     frameInterval: 20, 
     video: { 
      width: 1280, 
      height: 720 
     }, 
     canvas: { 
      width: 1280, 
      height: 720 
     } 
    }; 
    var recordRTC = RecordRTC(stream, options); 
    recordRTC.startRecording(); 

    setTimeout(function(){ 
     recordRTC.stopRecording(function(videoURL) { 
      stream.getVideoTracks()[0].stop(); 
      recordRTC.save(); 
     }); 
    },10*1000); 
}); 

Я надеюсь, что выше фрагмент кода поможет вам :)

+0

Я отформатировал ваш код лучше (пожалуйста, узнайте, как использовать многострочный код на SO), но я все еще не получаю ваше замечание mediaRecorder, можете ли вы объяснить, что лучше? – Xan

+0

Извините, его RecordRTC.js, который должен был использоваться для записи в ваш поток, получил через chrome.tabCapture API – Muthu

+0

Отлично, спасибо за редактирование, сохранено. – Xan

Смежные вопросы