function addRemoteVideo (videoToCreateData, callback) {
logger.debug('Adding remote video %s.', videoToCreateData.magnetUri)
- // Mongoose pre hook will automatically create the thumbnail on disk
- videoToCreateData.thumbnail = videoToCreateData.thumbnailBase64
-
const video = new Video(videoToCreateData)
- video.save(callback)
+ Video.generateThumbnailFromBase64(video, videoToCreateData.thumbnailBase64, function (err) {
+ if (err) {
+ logger.error('Cannot generate thumbnail from base 64 data.', { error: err })
+ return callback(err)
+ }
+
+ video.save(callback)
+ })
}
function removeRemoteVideo (videoToRemoveData, fromHost, callback) {
}
VideoSchema.statics = {
+ generateThumbnailFromBase64,
getDurationFromFile,
listForApi,
listByHostAndRemoteId,
}
)
- parallel(tasks, next)
- } else {
- generateThumbnailFromBase64(video, video.thumbnail, next)
+ return parallel(tasks, next)
}
+
+ return next()
})
mongoose.model('Video', VideoSchema)
// ------------------------------ STATICS ------------------------------
+function generateThumbnailFromBase64 (video, thumbnailData, callback) {
+ // Creating the thumbnail for a remote video
+
+ const thumbnailName = video.getThumbnailName()
+ const thumbnailPath = constants.CONFIG.STORAGE.THUMBNAILS_DIR + thumbnailName
+ fs.writeFile(thumbnailPath, thumbnailData, { encoding: 'base64' }, function (err) {
+ if (err) return callback(err)
+
+ return callback(null, thumbnailName)
+ })
+}
+
function getDurationFromFile (videoPath, callback) {
ffmpeg.ffprobe(videoPath, function (err, metadata) {
if (err) return callback(err)
generateImage(video, videoPath, constants.CONFIG.STORAGE.THUMBNAILS_DIR, video.getThumbnailName(), constants.THUMBNAILS_SIZE, callback)
}
-function generateThumbnailFromBase64 (video, thumbnailData, callback) {
- // Creating the thumbnail for this remote video)
-
- const thumbnailName = video.getThumbnailName()
- const thumbnailPath = constants.CONFIG.STORAGE.THUMBNAILS_DIR + thumbnailName
- fs.writeFile(thumbnailPath, thumbnailData, { encoding: 'base64' }, function (err) {
- if (err) return callback(err)
-
- return callback(null, thumbnailName)
- })
-}
-
function generateImage (video, videoPath, folder, imageName, size, callback) {
const options = {
filename: imageName,