উত্তর:
সম্পাদনা
যেহেতু এই উত্তরটি মূলত পোস্ট করা হয়েছে তাই ব্রাউজারের এপিআই পরিবর্তন হয়েছে।
.stop()
স্ট্রিমটিতে আর উপলব্ধ নেই যা কলব্যাকে চলে যায়। বিকাশকারীকে সেই ট্র্যাকগুলি অ্যাক্সেস করতে হবে যা স্ট্রিম তৈরি করে (অডিও বা ভিডিও) এবং সেগুলির প্রতিটি পৃথকভাবে বন্ধ করে দেয়।
এখানে আরও তথ্য: https://developers.google.com/web/updates/2015/07/mediastream-deprecations?hl=en#stop-end-and-active
উদাহরণ (উপরের লিঙ্ক থেকে):
stream.getTracks().forEach(function(track) {
track.stop();
});
ব্রাউজার সমর্থন পৃথক হতে পারে।
আসল উত্তর
navigator.getUserMedia
সাফল্য কলব্যাকে আপনাকে একটি স্ট্রিম সরবরাহ করে, আপনি .stop()
এই স্ট্রিমটিতে রেকর্ডিং বন্ধ করতে কল করতে পারেন (কমপক্ষে ক্রোমে, এফ এফ এটি পছন্দ করে না)
এই ফাংশনগুলির কোনও ব্যবহার করুন:
// stop both mic and camera
function stopBothVideoAndAudio(stream) {
stream.getTracks().forEach(function(track) {
if (track.readyState == 'live') {
track.stop();
}
});
}
// stop only camera
function stopVideoOnly(stream) {
stream.getTracks().forEach(function(track) {
if (track.readyState == 'live' && track.kind === 'video') {
track.stop();
}
});
}
// stop only mic
function stopAudioOnly(stream) {
stream.getTracks().forEach(function(track) {
if (track.readyState == 'live' && track.kind === 'audio') {
track.stop();
}
});
}
দ্রষ্টব্য: উত্তরটি আপডেট হয়েছিল: 06/09/2020
stream.getTracks().forEach(track => { track.stop() })
? বা যদি আপনি সংক্ষিপ্তর পক্ষে যুক্তিযুক্ত হওয়ার পক্ষে এটি প্রায়শই যথেষ্ট করেন তবে আপনি সর্বদা একটি সহায়ক ফাংশন সংজ্ঞায়িত করতে পারেন stopAllTracks(stream)
।
ব্যবহার করবেন না stream.stop()
, এটি অবহেলা করা হয়েছে
ব্যবহার stream.getTracks().forEach(track => track.stop())
মুক্তিযোদ্ধা, ক্রোম এবং অপেরা প্রকাশক শুরু করেছে getUserMedia
মাধ্যমে navigator.mediaDevices
মান হিসেবে NOW (পরিবর্তন করতে পারে :)
navigator.mediaDevices.getUserMedia({audio:true,video:true})
.then(stream => {
window.localStream = stream;
})
.catch( (err) =>{
console.log(err);
});
// later you can do below
// stop both video and audio
localStream.getTracks().forEach( (track) => {
track.stop();
});
// stop only audio
localStream.getAudioTracks()[0].stop();
// stop only video
localStream.getVideoTracks()[0].stop();
বিভিন্ন ব্রাউজার দিয়ে ওয়েবক্যাম ভিডিও শুরু করা
অপেরা 12 এর জন্য
window.navigator.getUserMedia(param, function(stream) {
video.src =window.URL.createObjectURL(stream);
}, videoError );
ফায়ারফক্স নাইটলি 18.0
window.navigator.mozGetUserMedia(param, function(stream) {
video.mozSrcObject = stream;
}, videoError );
ক্রোম 22 এর জন্য
window.navigator.webkitGetUserMedia(param, function(stream) {
video.src =window.webkitURL.createObjectURL(stream);
}, videoError );
বিভিন্ন ব্রাউজার দিয়ে ওয়েবক্যাম ভিডিও থামানো Stop
অপেরা 12 এর জন্য
video.pause();
video.src=null;
ফায়ারফক্স নাইটলি 18.0
video.pause();
video.mozSrcObject=null;
ক্রোম 22 এর জন্য
video.pause();
video.src="";
এটি দিয়ে ওয়েবক্যামের আলো প্রতিটি সময় নেমে যায় ...
ধরুন আমাদের কাছে ভিডিও ট্যাগটিতে স্ট্রিমিং রয়েছে এবং আইডি ভিডিও - <video id="video"></video>
তবে আমাদের নিম্নলিখিত কোড থাকা উচিত -
var videoEl = document.getElementById('video');
// now get the steam
stream = videoEl.srcObject;
// now get all tracks
tracks = stream.getTracks();
// now close each track by having forEach loop
tracks.forEach(function(track) {
// stopping every track
track.stop();
});
// assign null to srcObject of video
videoEl.srcObject = null;
ইউজারমিডিয়াতে সাফল্যের হাতলটিতে ফিরে আসা স্ট্রিম অবজেক্টটি ব্যবহার করে আপনি সরাসরি স্ট্রিমটি শেষ করতে পারেন। যেমন
localMediaStream.stop()
video.src=""
অথবা null
ভিডিও ট্যাগ থেকে উত্সটি সরিয়ে ফেলবে। এটি হার্ডওয়ারটি ছাড়বে না।
নীচে পদ্ধতি চেষ্টা করুন:
var mediaStream = null;
navigator.getUserMedia(
{
audio: true,
video: true
},
function (stream) {
mediaStream = stream;
mediaStream.stop = function () {
this.getAudioTracks().forEach(function (track) {
track.stop();
});
this.getVideoTracks().forEach(function (track) { //in case... :)
track.stop();
});
};
/*
* Rest of your code.....
* */
});
/*
* somewhere insdie your code you call
* */
mediaStream.stop();
যদি .stop()
এটিকে অবমূল্যায়ন করা হয় তবে আমি মনে করি না যে এটি আমাদের @ মুয়াজখান ডোজ মতো পুনরায় যুক্ত করা উচিত। এটি হ'ল কারণ কেন জিনিসগুলি হ্রাস করা হয় এবং আর ব্যবহার করা উচিত নয়। পরিবর্তে একটি সহায়ক ফাংশন তৈরি করুন ... এখানে আরও একটি এস 6 সংস্করণ রয়েছে
function stopStream (stream) {
for (let track of stream.getTracks()) {
track.stop()
}
}
for (let track of stream.getTracks()) { track.stop() }
যেহেতু আপনার স্ট্রিমিং বন্ধ করার জন্য ট্র্যাকগুলি প্রয়োজন এবং ট্র্যাকগুলি পেতে আপনার প্রয়োজন হবে, stream
উপরের মুয়াজ খানের উত্তরের সাহায্যে আমি কোডটি ব্যবহার করেছি:
if (navigator.getUserMedia) {
navigator.getUserMedia(constraints, function (stream) {
videoEl.src = stream;
videoEl.play();
document.getElementById('close').addEventListener('click', function () {
stopStream(stream);
});
}, errBack);
function stopStream(stream) {
console.log('stop called');
stream.getVideoTracks().forEach(function (track) {
track.stop();
});
অবশ্যই এটি সমস্ত সক্রিয় ভিডিও ট্র্যাকগুলি বন্ধ করে দেবে। আপনার যদি একাধিক থাকে তবে আপনার সেই অনুযায়ী নির্বাচন করা উচিত।
আপনাকে সমস্ত ট্র্যাক বন্ধ করতে হবে (ওয়েবক্যাম, মাইক্রোফোন থেকে):
localStream.getTracks().forEach(track => track.stop());
দয়া করে এটি দেখুন: https://jsfiddle.net/wazb1jks/3/
navigator.getUserMedia(mediaConstraints, function(stream) {
window.streamReference = stream;
}, onMediaError);
রেকর্ডিং বন্ধ করুন
function stopStream() {
if (!window.streamReference) return;
window.streamReference.getAudioTracks().forEach(function(track) {
track.stop();
});
window.streamReference.getVideoTracks().forEach(function(track) {
track.stop();
});
window.streamReference = null;
}
ওয়েব ক্যামেরা শুরু করুন
stopWebCamera =()=>
//Start Web Came
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
//use WebCam
navigator.mediaDevices.getUserMedia({ video: true }).then(stream => {
this.localStream = stream;
this.video.srcObject = stream;
this.video.play();
});
}
}
সাধারণভাবে ওয়েব ক্যামেরা বা ভিডিও প্লেব্যাক বন্ধ করুন
stopVideo =()=>
{
this.video.pause();
this.video.src = "";
this.video.srcObject = null;
// As per new API stop all streams
if (this.localStream)
this.localStream.getTracks().forEach(track => track.stop());
}
স্টপ ওয়েব ক্যামেরা ফাংশন এমনকি ভিডিও স্ট্রিমগুলির সাথেও কাজ করে:
this.video.src = this.state.videoToTest;
this.video.play();
হ্যান্ডল ফর্ম সাফল্যের একটি রেফারেন্স আছে
var streamRef;
var handleVideo = function (stream) {
streamRef = stream;
}
//this will stop video and audio both track
streamRef.getTracks().map(function (val) {
val.stop();
});
stream.stop()
ক্রোমের জন্য কাজmediaRecorder.stop()
করে না, রেকর্ডিং বন্ধ করে দেয়, যেখানে এটি ব্রাউজারের সরবরাহিত স্ট্রিমটি থামায় না। আপনি কি এই স্ট্যাকওভারফ্লো.com