WebGL 录制没有音轨,dpr 1.5 下宽高经常是奇数,libx264 的 yuv420p 会直接失败。转码改为偶数缩放、去掉音轨,并用 ultrafast 单线程适配关闭汇编的 ffmpeg 内核。
16 lines
932 B
TypeScript
16 lines
932 B
TypeScript
import { describe, expect, test } from "bun:test";
|
|
|
|
import { buildRecordingTranscodeArgs } from "../src/lib/canvas/canvas-video-merge-args";
|
|
|
|
describe("buildRecordingTranscodeArgs", () => {
|
|
test("奇数画布先裁成偶数,并且不要求音轨", () => {
|
|
const args = buildRecordingTranscodeArgs("recording.webm", "recording-transcoded.mp4");
|
|
expect(args).toContain("-an");
|
|
expect(args).toContain("scale=trunc(iw/2)*2:trunc(ih/2)*2");
|
|
expect(args).not.toContain("-c:a");
|
|
expect(args.indexOf("-vf")).toBeGreaterThan(args.indexOf("-i"));
|
|
expect(args.indexOf("-vf")).toBeLessThan(args.indexOf("recording-transcoded.mp4"));
|
|
expect(args).toEqual(["-i", "recording.webm", "-an", "-vf", "scale=trunc(iw/2)*2:trunc(ih/2)*2", "-c:v", "libx264", "-preset", "ultrafast", "-pix_fmt", "yuv420p", "-movflags", "+faststart", "-threads", "1", "recording-transcoded.mp4"]);
|
|
});
|
|
});
|