mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import ffmpeg from 'fluent-ffmpeg'
 | |
| import { FFMPEG_NICE } from '@server/initializers/constants'
 | |
| import { runCommand } from './ffmpeg-commons'
 | |
| 
 | |
| function convertWebPToJPG (path: string, destination: string): Promise<void> {
 | |
|   const command = ffmpeg(path, { niceness: FFMPEG_NICE.THUMBNAIL })
 | |
|     .output(destination)
 | |
| 
 | |
|   return runCommand({ command, silent: true })
 | |
| }
 | |
| 
 | |
| function processGIF (
 | |
|   path: string,
 | |
|   destination: string,
 | |
|   newSize: { width: number, height: number }
 | |
| ): Promise<void> {
 | |
|   const command = ffmpeg(path, { niceness: FFMPEG_NICE.THUMBNAIL })
 | |
|     .fps(20)
 | |
|     .size(`${newSize.width}x${newSize.height}`)
 | |
|     .output(destination)
 | |
| 
 | |
|   return runCommand({ command })
 | |
| }
 | |
| 
 | |
| async function generateThumbnailFromVideo (fromPath: string, folder: string, imageName: string) {
 | |
|   const pendingImageName = 'pending-' + imageName
 | |
| 
 | |
|   const options = {
 | |
|     filename: pendingImageName,
 | |
|     count: 1,
 | |
|     folder
 | |
|   }
 | |
| 
 | |
|   return new Promise<string>((res, rej) => {
 | |
|     ffmpeg(fromPath, { niceness: FFMPEG_NICE.THUMBNAIL })
 | |
|       .on('error', rej)
 | |
|       .on('end', () => res(imageName))
 | |
|       .thumbnail(options)
 | |
|   })
 | |
| }
 | |
| 
 | |
| export {
 | |
|   convertWebPToJPG,
 | |
|   processGIF,
 | |
|   generateThumbnailFromVideo
 | |
| }
 |