想知道是否有人可以在這里幫助我!
我目前正在通過 MediaRecorder API 將 HTML5 Canvas 保存為 MP4 檔案。現在我的畫布不包含任何音頻,但我需要一個內置的音頻通道作為只有 h.264 的檔案,并且沒有音頻編解碼器與我正在使用的軟體不兼容。
即使畫布中沒有使用音頻,是否也可以強制 Safari 將音頻編解碼器放入流中?
基本上我試圖實作以下目標:AAC、H.264
而不是我現在擁有的:H.264
這是我到目前為止所擁有的(減去一些其他細節):
// setup media recording
const recordedChunks = [];
const stream = canvas.captureStream(60);
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.ondataavailable = (e) => recordedChunks.push(e.data);
mediaRecorder.onstop = async (e) => {
const download = (fileName, url) => {
const a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
// download video
const videoData = new Blob(recordedChunks, { type: "video/mp4" });
download("1.mp4", URL.createObjectURL(videoData));
}
// start recording
mediaRecorder.start();
// do some canvas related operations
// ...
mediaRecorder.stop();
我想如果這里沒有作業,我可能只是通過 FFMPEG 向視頻添加靜音音頻通道。
謝謝!
uj5u.com熱心網友回復:
我不熟悉編解碼器等,但您可以按如下方式向視頻流添加靜音音頻通道:
const stream = canvas.captureStream(60);
const audioContext = new AudioContext();
const oscillator = audioContext.createOscillator();
oscillator.frequency.value = 0;
const streamAudioDestination = audioContext.createMediaStreamDestination();
oscillator.connect(streamAudioDestination);
oscillator.start();
// add audio track
const audioStream = streamAudioDestination.stream;
const audioTracks = audioStream.getAudioTracks();
const firstAudioTrack = audioTracks[0];
stream.addTrack(firstAudioTrack);
const mediaRecorder = new MediaRecorder(stream);
uj5u.com熱心網友回復:
謝謝,也許這會有所幫助?
```a.href``` =
url:
````a.download``` =
fileName:
```a.click```(.264):
():
```c.AAC```
```H.264```
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359034.html
標籤:javascript html5-canvas mp4 媒体记录器
