mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-11-13 19:42:38 +05:30
fix(audio): misc
This commit is contained in:
parent
7962bba04f
commit
f3ed70258e
10 changed files with 55 additions and 52 deletions
|
|
@ -27,9 +27,7 @@ export default function ToolMultipleAudioInput({
|
|||
title,
|
||||
type
|
||||
}: MultiAudioInputComponentProps) {
|
||||
const theme = useTheme();
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
const { showSnackBar } = useContext(CustomSnackBarContext);
|
||||
|
||||
const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const files = event.target.files;
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ export default function ChangeSpeed({
|
|||
getGroups={getGroups}
|
||||
setInput={setInput}
|
||||
compute={compute}
|
||||
toolInfo={{ title: `What is a ${title}?`, description: longDescription }}
|
||||
toolInfo={{ title: `What is ${title}?`, description: longDescription }}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,5 @@
|
|||
import {
|
||||
Box,
|
||||
FormControl,
|
||||
InputLabel,
|
||||
MenuItem,
|
||||
Select,
|
||||
SelectChangeEvent
|
||||
} from '@mui/material';
|
||||
import React, { useState, useEffect, useRef } from 'react';
|
||||
import { Box } from '@mui/material';
|
||||
import React, { useState } from 'react';
|
||||
import ToolContent from '@components/ToolContent';
|
||||
import { ToolComponentProps } from '@tools/defineTool';
|
||||
import { extractAudioFromVideo } from './service';
|
||||
|
|
@ -28,7 +21,6 @@ export default function ExtractAudio({
|
|||
const [audioFile, setAudioFile] = useState<File | null>(null);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
// Tool Options section for output format
|
||||
const getGroups: GetGroupsType<InitialValuesType> = ({
|
||||
values,
|
||||
updateField
|
||||
|
|
@ -58,13 +50,12 @@ export default function ExtractAudio({
|
|||
];
|
||||
};
|
||||
|
||||
// Compute function for ToolContent (no-op, extraction is handled by effect)
|
||||
const compute = async (values: InitialValuesType, input: File | null) => {
|
||||
if (!input) return;
|
||||
try {
|
||||
setLoading(true);
|
||||
const audioFileObj = await extractAudioFromVideo(input, values);
|
||||
await setAudioFile(audioFileObj);
|
||||
setAudioFile(audioFileObj);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
} finally {
|
||||
|
|
@ -84,15 +75,10 @@ export default function ExtractAudio({
|
|||
<ToolFileResult
|
||||
title={'Extracting Audio'}
|
||||
value={null}
|
||||
extension={''}
|
||||
loading={true}
|
||||
/>
|
||||
) : (
|
||||
<ToolFileResult
|
||||
title={'Extracted Audio'}
|
||||
value={audioFile}
|
||||
extension={initialValues.outputFormat}
|
||||
/>
|
||||
<ToolFileResult title={'Extracted Audio'} value={audioFile} />
|
||||
)
|
||||
}
|
||||
initialValues={initialValues}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ export async function extractAudioFromVideo(
|
|||
|
||||
const configuredOutputAudioFormat = options.outputFormat;
|
||||
const outputName = `output.${configuredOutputAudioFormat}`;
|
||||
let args: string[] = ['-i', inputName, '-vn'];
|
||||
const args: string[] = ['-i', inputName, '-vn'];
|
||||
|
||||
if (configuredOutputAudioFormat === 'mp3') {
|
||||
args.push(
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ export default function MergeAudio({
|
|||
getGroups={getGroups}
|
||||
setInput={setInput}
|
||||
compute={compute}
|
||||
toolInfo={{ title: `What is a ${title}?`, description: longDescription }}
|
||||
toolInfo={{ title: `What is ${title}?`, description: longDescription }}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { lazy } from 'react';
|
|||
export const tool = defineTool('audio', {
|
||||
name: 'Merge Audio',
|
||||
path: 'merge-audio',
|
||||
icon: 'mdi:music-note-multiple',
|
||||
icon: 'fluent:merge-20-regular',
|
||||
description:
|
||||
'Combine multiple audio files into a single audio file by concatenating them in sequence.',
|
||||
shortDescription: 'Merge multiple audio files into one (MP3, AAC, WAV).',
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ export async function mergeAudioFiles(
|
|||
await ffmpeg.writeFile(fileListName, fileListContent);
|
||||
|
||||
// Build FFmpeg arguments for merging
|
||||
let args: string[] = ['-f', 'concat', '-safe', '0', '-i', fileListName];
|
||||
const args: string[] = ['-f', 'concat', '-safe', '0', '-i', fileListName];
|
||||
|
||||
// Add format-specific arguments
|
||||
if (outputFormat === 'mp3') {
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ export default function Trim({ title, longDescription }: ToolComponentProps) {
|
|||
getGroups={getGroups}
|
||||
setInput={setInput}
|
||||
compute={compute}
|
||||
toolInfo={{ title: `What is a ${title}?`, description: longDescription }}
|
||||
toolInfo={{ title: `What is ${title}?`, description: longDescription }}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { stringTools } from '../pages/tools/string';
|
||||
import { imageTools } from '../pages/tools/image';
|
||||
import { DefinedTool, ToolCategory } from './defineTool';
|
||||
import { capitalizeFirstLetter } from '../utils/string';
|
||||
import { capitalizeFirstLetter } from '@utils/string';
|
||||
import { numberTools } from '../pages/tools/number';
|
||||
import { videoTools } from '../pages/tools/video';
|
||||
import { audioTools } from 'pages/tools/audio';
|
||||
|
|
@ -15,17 +15,17 @@ import { pdfTools } from '../pages/tools/pdf';
|
|||
|
||||
const toolCategoriesOrder: ToolCategory[] = [
|
||||
'image-generic',
|
||||
'string',
|
||||
'json',
|
||||
'pdf',
|
||||
'string',
|
||||
'video',
|
||||
'time',
|
||||
'audio',
|
||||
'json',
|
||||
'list',
|
||||
'csv',
|
||||
'number',
|
||||
'png',
|
||||
'time',
|
||||
'gif',
|
||||
'audio'
|
||||
'gif'
|
||||
];
|
||||
export const tools: DefinedTool[] = [
|
||||
...imageTools,
|
||||
|
|
@ -121,7 +121,7 @@ const categoriesConfig: {
|
|||
},
|
||||
{
|
||||
type: 'audio',
|
||||
icon: 'rivet-icons:audio',
|
||||
icon: 'ic:twotone-audiotrack',
|
||||
value:
|
||||
'Tools for working with audio – extract audio from video, adjusting audio speed, merging multiple audio files and much more.'
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue