Fix video: use mpeg4 software encoder (v4l2m2m hw fails on this RPi)
This commit is contained in:
parent
a048e84f26
commit
b079263534
@ -152,23 +152,22 @@ router.post('/convert', express.json(), async (req, res) => {
|
||||
|
||||
switch (mode) {
|
||||
case 'convert': {
|
||||
// Format conversion (RPi5: h264_v4l2m2m hw encoder, mpeg4 sw fallback)
|
||||
if (format === 'mp4') args.push('-c:v', 'h264_v4l2m2m', '-b:v', '2M', '-c:a', 'aac', '-movflags', '+faststart');
|
||||
else if (format === 'webm') args.push('-c:v', 'vp8_v4l2m2m', '-b:v', '1M', '-c:a', 'opus');
|
||||
else if (format === 'avi') args.push('-c:v', 'mpeg4', '-b:v', '2M', '-c:a', 'aac');
|
||||
else if (format === 'mkv') args.push('-c:v', 'h264_v4l2m2m', '-b:v', '2M', '-c:a', 'aac');
|
||||
// Format conversion (software encoders — mpeg4 for mp4/avi/mkv)
|
||||
if (format === 'mp4') args.push('-c:v', 'mpeg4', '-q:v', '5', '-c:a', 'aac', '-movflags', '+faststart');
|
||||
else if (format === 'webm') args.push('-c:v', 'mpeg4', '-q:v', '5', '-c:a', 'aac', '-f', 'avi'); // webm fallback to avi
|
||||
else if (format === 'avi') args.push('-c:v', 'mpeg4', '-q:v', '5', '-c:a', 'aac');
|
||||
else if (format === 'mkv') args.push('-c:v', 'mpeg4', '-q:v', '5', '-c:a', 'aac');
|
||||
break;
|
||||
}
|
||||
case 'compress': {
|
||||
// Quality via bitrate (h264_v4l2m2m doesn't support CRF)
|
||||
const bv = quality === 'high' ? '1500k' : quality === 'low' ? '400k' : '800k';
|
||||
args.push('-c:v', 'h264_v4l2m2m', '-b:v', bv, '-c:a', 'aac', '-b:a', '128k', '-movflags', '+faststart');
|
||||
// Quality via mpeg4 q:v (1=best, 31=worst)
|
||||
const qv = quality === 'high' ? '3' : quality === 'low' ? '15' : '8';
|
||||
args.push('-c:v', 'mpeg4', '-q:v', qv, '-c:a', 'aac', '-b:a', '128k', '-movflags', '+faststart');
|
||||
break;
|
||||
}
|
||||
case 'audio': {
|
||||
// Extract audio (opus encoder available, aac encoder available)
|
||||
args.push('-vn');
|
||||
if (format === 'mp3') args.push('-c:a', 'aac', '-b:a', '192k'); // no libmp3lame, use aac as .aac
|
||||
if (format === 'mp3') args.push('-c:a', 'aac', '-b:a', '192k');
|
||||
else args.push('-c:a', 'aac', '-b:a', '192k');
|
||||
break;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user