5
我正嘗試使用ffmpeg.js將webM文件轉換爲mp4。 我正在從畫布上錄製視頻(疊加了一些信息)並錄製了視頻中的音頻數據。webRTC使用ffmpeg.js將webm轉換爲mp4
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個單一流(音頻和視頻)時如何轉換爲mp4。但是我有一個音軌有附加音軌。我可以將這種流轉換爲mp4嗎?如何做到這一點?
這是一個真棒黑客。現在我節省了大量的代碼,可以擺脫ffmpeg_asm.js。非常感謝你。 –
@Ajay _「所以你可以直接從chrome MediaRecorder通過以下hack獲取mp4錄音:_ffmpeg -i file.mp3輸出從'file.mp3'輸入#0,matroska,webm:元數據:編碼器: Chrome持續時間:不適用,開始:0.000000,比特率:不適用流#0:0(eng):音頻:opus,48000Hz,單聲道,fltp(默認值)'和$ ffprobe -v error -select_streams a: 0 -show_entries stream = codec_name -of default = noprint_wrappers = 1:nokey = 1 file.mp3'輸出'opus'用於使用'.wav'文件輸入的方法。 – guest271314
@Ajay你的意思是「直接獲取mp4錄音」?也許我犯了一些錯誤,但在我的測試中,我只獲得了原始的webm/h264視頻,但使用了不同的MIME類型。所以視頻容器不會改變。因此,在新的Blob(...)行後,二進制數據完全相同,對嗎?那就是我所嘗試的:https://jsfiddle.net/zqd8qf6e/ 這裏的目標不是視頻容器從webm改變到沒有ffmpeg.js的mp4嗎? –