के साथ वेबएम को एमपी 4 में परिवर्तित करें। मैं fmpepeg.js के साथ mp4 में वेबएम फ़ाइलों को परिवर्तित करने की कोशिश कर रहा हूं। मैं कैनवास (कुछ जानकारी के साथ ओवरलेयर) से वीडियो रिकॉर्ड कर रहा हूं और वीडियो से ऑडियो डेटा रिकॉर्ड कर रहा हूं।वेबआरटीसी fmpepeg.js
stream = new MediaStream();
var videoElem = document.getElementById('video');
var videoStream = videoElem.captureStream();
stream.addTrack(videoStream.getAudioTracks()[0]);
stream.addTrack(canvas.captureStream().getVideoTracks()[0]);
var options = {mimeType: 'video/webm'};
recordedBlobs = [];
mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.onstop = handleStop;
mediaRecorder.ondataavailable = handleDataAvailable;
mediaRecorder.start(100); // collect 100ms of data
function handleDataAvailable(event) {
if (event.data && event.data.size > 0) {
recordedBlobs.push(event.data);
}
}
mediaRecorder.stop();
इस कोड अपेक्षित ढंग से काम करता है और एक WebM वीडियो
var blob = new Blob(recordedBlobs, {type: 'video/webm'});
अब मैं एक mp4 फ़ाइल चाहते हैं और muaz-खान से ffmpeg.js जाँच देता है। उदाहरण केवल दिखाएं कि आपके पास 2 सिंगल स्ट्रीम (ऑडियो और वीडियो) होने पर एमपी 4 में कैसे परिवर्तित किया जाए। लेकिन मेरे पास एक अतिरिक्त ऑडियो ट्रैक वाला एक स्ट्रीम है। क्या मैं ऐसी स्ट्रीम को एमपी 4 में परिवर्तित कर सकता हूं? वह कैसे किया जा सकता है?
इस एक भयानक हैक है साथ mp4 क्रोम MediaRecorder से सीधे रिकॉर्डिंग प्राप्त कर सकते हैं। अब मैं बहुत सारे कोड को बचा रहा हूं और ffmpeg_asm.js से छुटकारा पा सकता हूं। आपका बहुत बहुत धन्यवाद। –
@Ajay _ "तो आप क्रोम MediaRecorder से सीधे mp4 रिकॉर्डिंग प्राप्त कर सकते हैं निम्नलिखित हैक" _ '$ ffmpeg -i file.mp3' आउटपुट 'इनपुट # 0, matroska, webm,' file.mp3 'से: मेटाडाटा: एन्कोडर: क्रोम अवधि: एन/ए, शुरू करें: 0.000000, बिटरेट: एन/ए स्ट्रीम # 0: 0 (एनजी): ऑडियो: ओपस, 48000 हर्ट्ज, मोनो, फ्लैट (डिफ़ॉल्ट) 'और '$ ffprobe -v त्रुटि-चयन_स्ट्रीम एक: '-wav' फ़ाइल इनपुट के साथ दृष्टिकोण का उपयोग करने के लिए 0 -show_entries stream = codec_name -of default = noprint_wrappers = 1: nokey = 1 file.mp3' outputs' opus'। – guest271314
@Ajay "एमपी 4 रिकॉर्डिंग सीधे प्राप्त करें" से आपका क्या मतलब है? शायद मैंने कुछ गलती की, लेकिन मेरे परीक्षण में मुझे केवल मूल वेबएम/एच 264 वीडियो मिलता है लेकिन एक अलग माइम प्रकार के साथ। तो वीडियो कंटेनर बदल नहीं है। इस प्रकार बाइनरी डेटा बिल्कुल नई ब्लॉब (...) लाइन के बाद समान है, है ना? जो मैंने कोशिश की है: https://jsfiddle.net/zqd8qf6e/ क्या लक्ष्य यहां नहीं है कि वीडियो कंटेनर fmpepeg.js के बिना वेबएम से mp4 में बदलता है? –