Page MenuHomePhorge

D14477.1767135599.diff
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

D14477.1767135599.diff

diff --git a/lib/types/media-types.js b/lib/types/media-types.js
--- a/lib/types/media-types.js
+++ b/lib/types/media-types.js
@@ -124,7 +124,7 @@
+step: 'video_generate_thumbnail',
+success: boolean,
+time: number, // ms
- +returnCode: number,
+ +exceptionMessage: ?string,
+thumbnailURI: string,
};
diff --git a/native/media/ffmpeg.js b/native/media/ffmpeg.js
--- a/native/media/ffmpeg.js
+++ b/native/media/ffmpeg.js
@@ -4,7 +4,11 @@
import type { FFmpegStatistics, VideoInfo } from 'lib/types/media-types.js';
-import { getVideoInfo, hasMultipleFrames } from '../utils/media-module.js';
+import {
+ getVideoInfo,
+ hasMultipleFrames,
+ generateThumbnail,
+} from '../utils/media-module.js';
const maxSimultaneousCalls = {
process: 1,
@@ -106,22 +110,11 @@
return this.queueCommand('process', wrappedCommand);
}
- generateThumbnail(videoPath: string, outputPath: string): Promise<number> {
- const wrappedCommand = () =>
- FFmpeg.innerGenerateThumbnail(videoPath, outputPath);
+ generateThumbnail(videoPath: string, outputPath: string): Promise<void> {
+ const wrappedCommand = () => generateThumbnail(videoPath, outputPath);
return this.queueCommand('process', wrappedCommand);
}
- static async innerGenerateThumbnail(
- videoPath: string,
- outputPath: string,
- ): Promise<number> {
- const thumbnailCommand = `-i ${videoPath} -frames 1 -f mjpeg ${outputPath}`;
- const session = await FFmpegKit.execute(thumbnailCommand);
- const returnCode = await session.getReturnCode();
- return returnCode.getValue();
- }
-
getVideoInfo(path: string): Promise<VideoInfo> {
const wrappedCommand = () => FFmpeg.innerGetVideoInfo(path);
return this.queueCommand('probe', wrappedCommand);
diff --git a/native/media/video-utils.js b/native/media/video-utils.js
--- a/native/media/video-utils.js
+++ b/native/media/video-utils.js
@@ -192,16 +192,17 @@
thumbnailPath: string,
): Promise<VideoGenerateThumbnailMediaMissionStep> {
const thumbnailStart = Date.now();
- const thumbnailReturnCode = await ffmpeg.generateThumbnail(
- path,
- thumbnailPath,
- );
- const thumbnailGenerationSuccessful = thumbnailReturnCode === 0;
+ let exceptionMessage;
+ try {
+ await ffmpeg.generateThumbnail(path, thumbnailPath);
+ } catch (e) {
+ exceptionMessage = getMessageForException(e);
+ }
return {
step: 'video_generate_thumbnail',
- success: thumbnailGenerationSuccessful,
+ success: true,
time: Date.now() - thumbnailStart,
- returnCode: thumbnailReturnCode,
+ exceptionMessage,
thumbnailURI: thumbnailPath,
};
}
diff --git a/native/utils/media-module.js b/native/utils/media-module.js
--- a/native/utils/media-module.js
+++ b/native/utils/media-module.js
@@ -13,6 +13,7 @@
const MediaModule: {
+getVideoInfo: (path: string) => Promise<VideoInfo>,
+hasMultipleFrames: (path: string) => Promise<boolean>,
+ +generateThumbnail: (inputPath: string, outputPath: string) => Promise<void>,
} = requireNativeModule('MediaModule');
export function getVideoInfo(path: string): Promise<VideoInfo> {
@@ -22,3 +23,10 @@
export function hasMultipleFrames(path: string): Promise<boolean> {
return MediaModule.hasMultipleFrames(path);
}
+
+export function generateThumbnail(
+ inputPath: string,
+ outputPath: string,
+): Promise<void> {
+ return MediaModule.generateThumbnail(inputPath, outputPath);
+}

File Metadata

Mime Type
text/plain
Expires
Tue, Dec 30, 10:59 PM (10 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5870623
Default Alt Text
D14477.1767135599.diff (3 KB)

Event Timeline