Skip to content

Commit

Permalink
chore: details log
Browse files Browse the repository at this point in the history
  • Loading branch information
hughfenghen committed Dec 20, 2024
1 parent 22c4448 commit 6a92cbf
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 31 deletions.
6 changes: 6 additions & 0 deletions .changeset/perfect-houses-hug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@webav/internal-utils': patch
'@webav/av-cliper': patch
---

chore: details log
34 changes: 22 additions & 12 deletions packages/av-cliper/src/clips/mp4-clip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -740,6 +740,12 @@ class VideoFrameFinder {
this.#inputChunkCnt = 0;
this.#outputFrameCnt = 0;
if (this.#dec?.state !== 'closed') this.#dec?.close();
const encoderConf = {
...this.conf,
...(this.#downgradeSoftDecode
? { hardwareAcceleration: 'prefer-software' }
: {}),
} as VideoDecoderConfig;
this.#dec = new VideoDecoder({
output: (vf) => {
this.#outputFrameCnt += 1;
Expand All @@ -757,15 +763,14 @@ class VideoFrameFinder {
this.#videoFrames.push(rsVf);
},
error: (err) => {
Log.error(`MP4Clip VideoDecoder err: ${err.message}`);
Log.error(
`VideoFinder VideoDecoder err: ${err.message}`,
', config:',
encoderConf,
);
},
});
this.#dec.configure({
...this.conf,
...(this.#downgradeSoftDecode
? { hardwareAcceleration: 'prefer-software' }
: {}),
});
this.#dec.configure(encoderConf);
};

#getState = () => ({
Expand Down Expand Up @@ -1309,6 +1314,10 @@ async function thumbnailByKeyFrame(
});

function createVideoDec(downgrade = false) {
const encoderConf = {
...decConf,
...(downgrade ? { hardwareAcceleration: 'prefer-software' } : {}),
} as VideoDecoderConfig;
const dec = new VideoDecoder({
output: (vf) => {
outputCnt += 1;
Expand All @@ -1320,17 +1329,18 @@ async function thumbnailByKeyFrame(
}
},
error: (err) => {
Log.error(`thumbnails decoder error: ${err.message}`);
Log.error(
`thumbnails decoder error: ${err.message}`,
', config:',
encoderConf,
);
},
});
abortSingl.addEventListener('abort', () => {
fileReader.close();
if (dec.state !== 'closed') dec.close();
});
dec.configure({
...decConf,
...(downgrade ? { hardwareAcceleration: 'prefer-software' } : {}),
});
dec.configure(encoderConf);
return dec;
}
}
Expand Down
16 changes: 10 additions & 6 deletions packages/av-cliper/src/mp4-utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -293,18 +293,22 @@ function createMP4AudioSampleEncoder(
aeConf: Parameters<AudioEncoder['configure']>[0],
onOutput: (s: ReturnType<typeof chunk2MP4SampleOpts>) => void,
) {
const encoderConf = {
codec: aeConf.codec,
sampleRate: aeConf.sampleRate,
numberOfChannels: aeConf.numberOfChannels,
} as const;

const adEncoder = new AudioEncoder({
output: (chunk) => {
onOutput(chunk2MP4SampleOpts(chunk));
},
error: Log.error,
error: (err) => {
Log.error('AudioEncoder error:', err, ', config:', encoderConf);
},
});

adEncoder.configure({
codec: aeConf.codec,
sampleRate: aeConf.sampleRate,
numberOfChannels: aeConf.numberOfChannels,
});
adEncoder.configure(encoderConf);

// 保留一个音频数据,用于最后做声音淡出
let lastData: { data: Float32Array; ts: number } | null = null;
Expand Down
33 changes: 20 additions & 13 deletions packages/internal-utils/src/recodemux.ts
Original file line number Diff line number Diff line change
Expand Up @@ -301,12 +301,7 @@ function createVideoEncoder(
videoOpts: NonNullable<IRecodeMuxOpts['video']>,
outHandler: EncodedVideoChunkOutputCallback,
): VideoEncoder {
const encoder = new VideoEncoder({
error: Log.error,
output: outHandler,
});

encoder.configure({
const encoderConf = {
codec: videoOpts.codec,
framerate: videoOpts.expectFPS,
hardwareAcceleration: videoOpts.__unsafe_hardwareAcceleration__,
Expand All @@ -320,7 +315,15 @@ function createVideoEncoder(
avc: { format: 'avc' },
// mp4box.js 无法解析 annexb 的 mimeCodec ,只会显示 avc1
// avc: { format: 'annexb' }
} as const;
const encoder = new VideoEncoder({
error: (err) => {
Log.error('VideoEncoder error:', err, ', config:', encoderConf);
},
output: outHandler,
});

encoder.configure(encoderConf);
return encoder;
}

Expand Down Expand Up @@ -350,8 +353,17 @@ function encodeAudioTrack(
cache = [];
});

const encoderConf = {
codec: audioOpts.codec === 'aac' ? 'mp4a.40.2' : 'opus',
sampleRate: audioOpts.sampleRate,
numberOfChannels: audioOpts.channelCount,
bitrate: 128_000,
} as const;

const encoder = new AudioEncoder({
error: Log.error,
error: (err) => {
Log.error('AudioEncoder error:', err, ', config:', encoderConf);
},
output: (chunk, meta) => {
if (trackId === -1) {
// 某些设备不会输出 description
Expand All @@ -372,12 +384,7 @@ function encodeAudioTrack(
}
},
});
encoder.configure({
codec: audioOpts.codec === 'aac' ? 'mp4a.40.2' : 'opus',
sampleRate: audioOpts.sampleRate,
numberOfChannels: audioOpts.channelCount,
bitrate: 128_000,
});
encoder.configure(encoderConf);

return encoder;
}
Expand Down

0 comments on commit 6a92cbf

Please sign in to comment.