MCPcopy Index your code
hub / github.com/simstudioai/sim / extractAudioFromVideo

Function extractAudioFromVideo

apps/sim/lib/audio/extractor.ts:69–112  ·  view source on GitHub ↗
(
  inputBuffer: Buffer,
  mimeType: string,
  options: AudioExtractionOptions = {}
)

Source from the content-addressed store, hash-verified

67 * Extract audio from video or convert audio format using FFmpeg
68 */
69export async function extractAudioFromVideo(
70 inputBuffer: Buffer,
71 mimeType: string,
72 options: AudioExtractionOptions = {}
73): Promise<AudioExtractionResult> {
74 // Initialize FFmpeg on first use
75 ensureFfmpeg()
76 const isVideo = mimeType.startsWith('video/')
77 const isAudio = mimeType.startsWith('audio/')
78
79 // If it's already audio and no conversion needed, get metadata and return
80 if (isAudio && !options.outputFormat) {
81 try {
82 const metadata = await getAudioMetadata(inputBuffer, mimeType)
83 return {
84 buffer: inputBuffer,
85 format: mimeType.split('/')[1] || 'unknown',
86 duration: metadata.duration || 0,
87 size: inputBuffer.length,
88 }
89 } catch (error) {
90 // If metadata extraction fails, still return the buffer
91 return {
92 buffer: inputBuffer,
93 format: mimeType.split('/')[1] || 'unknown',
94 duration: 0,
95 size: inputBuffer.length,
96 }
97 }
98 }
99
100 // For video or audio conversion, use ffmpeg
101 if (isVideo || options.outputFormat) {
102 return await convertAudioWithFFmpeg(inputBuffer, mimeType, options)
103 }
104
105 // Fallback
106 return {
107 buffer: inputBuffer,
108 format: options.outputFormat || mimeType.split('/')[1] || 'unknown',
109 duration: 0,
110 size: inputBuffer.length,
111 }
112}
113
114/**
115 * Convert audio/video using FFmpeg

Callers 1

route.tsFile · 0.90

Calls 3

getAudioMetadataFunction · 0.85
convertAudioWithFFmpegFunction · 0.85
ensureFfmpegFunction · 0.70

Tested by

no test coverage detected