我正在尝试使用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-khan的ffmpeg.js。示例仅显示如何在具有2个单独流(音频和视频)时转换为mp4。但我有一个带有附加音轨的流。我能将这样的流转换为mp4吗?应该如何完成?
$ ffmpeg -i file.mp3
输出Input #0, matroska,webm, from 'file.mp3': Metadata: encoder : Chrome Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
而使用.wav
文件输入的方法则需要$ ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 file.mp3
输出opus
。 - guest271314