add error logging

This commit is contained in:
Abhinav 2022-11-14 19:35:40 +05:30
parent 6c384edba8
commit f424a23ad4

View file

@ -5,77 +5,93 @@ import {
} from 'constants/ffmpeg'; } from 'constants/ffmpeg';
import { ElectronFile } from 'types/upload'; import { ElectronFile } from 'types/upload';
import { parseFFmpegExtractedMetadata } from 'utils/ffmpeg'; import { parseFFmpegExtractedMetadata } from 'utils/ffmpeg';
import { logError } from 'utils/sentry';
import ffmpegFactory from './ffmpegFactory'; import ffmpegFactory from './ffmpegFactory';
export async function generateVideoThumbnail( export async function generateVideoThumbnail(
file: File | ElectronFile file: File | ElectronFile
): Promise<File | ElectronFile> { ): Promise<File | ElectronFile> {
let seekTime = 1.0; try {
const ffmpegClient = await ffmpegFactory.getFFmpegClient(); let seekTime = 1.0;
while (seekTime > 0) { const ffmpegClient = await ffmpegFactory.getFFmpegClient();
try { while (seekTime > 0) {
return await ffmpegClient.run( try {
[ return await ffmpegClient.run(
FFMPEG_PLACEHOLDER, [
'-i', FFMPEG_PLACEHOLDER,
INPUT_PATH_PLACEHOLDER, '-i',
'-ss', INPUT_PATH_PLACEHOLDER,
`00:00:0${seekTime.toFixed(3)}`, '-ss',
'-vframes', `00:00:0${seekTime.toFixed(3)}`,
'1', '-vframes',
'-vf', '1',
'scale=-1:720', '-vf',
OUTPUT_PATH_PLACEHOLDER, 'scale=-1:720',
], OUTPUT_PATH_PLACEHOLDER,
file, ],
'thumb.jpeg' file,
); 'thumb.jpeg'
} catch (e) { );
seekTime = Number((seekTime / 10).toFixed(3)); } catch (e) {
seekTime = Number((seekTime / 10).toFixed(3));
}
} }
throw Error('Thumbnail generation failed');
} catch (e) {
logError(e, 'ffmpeg generateVideoThumbnail failed');
throw e;
} }
throw Error('Thumbnail generation failed');
} }
export async function extractVideoMetadata(file: File | ElectronFile) { export async function extractVideoMetadata(file: File | ElectronFile) {
const ffmpegClient = await ffmpegFactory.getFFmpegClient(); try {
// https://stackoverflow.com/questions/9464617/retrieving-and-saving-media-metadata-using-ffmpeg const ffmpegClient = await ffmpegFactory.getFFmpegClient();
// -c [short for codex] copy[(stream_specifier)[ffmpeg.org/ffmpeg.html#Stream-specifiers]] => copies all the stream without re-encoding // https://stackoverflow.com/questions/9464617/retrieving-and-saving-media-metadata-using-ffmpeg
// -map_metadata [http://ffmpeg.org/ffmpeg.html#Advanced-options search for map_metadata] => copies all stream metadata to the out // -c [short for codex] copy[(stream_specifier)[ffmpeg.org/ffmpeg.html#Stream-specifiers]] => copies all the stream without re-encoding
// -f ffmetadata [https://ffmpeg.org/ffmpeg-formats.html#Metadata-1] => dump metadata from media files into a simple UTF-8-encoded INI-like text file // -map_metadata [http://ffmpeg.org/ffmpeg.html#Advanced-options search for map_metadata] => copies all stream metadata to the out
const metadata = await ffmpegClient.run( // -f ffmetadata [https://ffmpeg.org/ffmpeg-formats.html#Metadata-1] => dump metadata from media files into a simple UTF-8-encoded INI-like text file
[ const metadata = await ffmpegClient.run(
FFMPEG_PLACEHOLDER, [
'-i', FFMPEG_PLACEHOLDER,
INPUT_PATH_PLACEHOLDER, '-i',
'-c', INPUT_PATH_PLACEHOLDER,
'copy', '-c',
'-map_metadata', 'copy',
'0', '-map_metadata',
'-f', '0',
'ffmetadata', '-f',
OUTPUT_PATH_PLACEHOLDER, 'ffmetadata',
], OUTPUT_PATH_PLACEHOLDER,
file, ],
`metadata.txt` file,
); `metadata.txt`
return parseFFmpegExtractedMetadata( );
new Uint8Array(await metadata.arrayBuffer()) return parseFFmpegExtractedMetadata(
); new Uint8Array(await metadata.arrayBuffer())
);
} catch (e) {
logError(e, 'ffmpeg extractVideoMetadata failed');
throw e;
}
} }
export async function convertToMP4(file: File | ElectronFile) { export async function convertToMP4(file: File | ElectronFile) {
const ffmpegClient = await ffmpegFactory.getFFmpegClient(); try {
return await ffmpegClient.run( const ffmpegClient = await ffmpegFactory.getFFmpegClient();
[ return await ffmpegClient.run(
FFMPEG_PLACEHOLDER, [
'-i', FFMPEG_PLACEHOLDER,
INPUT_PATH_PLACEHOLDER, '-i',
'-preset', INPUT_PATH_PLACEHOLDER,
'ultrafast', '-preset',
OUTPUT_PATH_PLACEHOLDER, 'ultrafast',
], OUTPUT_PATH_PLACEHOLDER,
file, ],
'output.mp4' file,
); 'output.mp4'
);
} catch (e) {
logError(e, 'ffmpeg convertToMP4 failed');
throw e;
}
} }