Grazie per aver dedicato del tempo a leggere la mia domanda.File audio non elaborato su AAC utilizzando Windows Media Foundation su Windows 7
Sto sviluppando un'applicazione C++ utilizzando Qt e Windows API.
Sto registrando l'uscita del microfono in piccoli file audio 10s in formato raw e voglio convertirli in formato AAC.
Ho provato a leggere il maggior numero possibile di cose e ho pensato che sarebbe stata una buona idea iniziare dall'API transcode di Windows Media Foundation.
Il problema è che non riesco a utilizzare un file .raw o .pcm nella funzione "CreateObjectFromUrl" e quindi per il momento sono praticamente bloccato. Continua a non riuscire. Il codice di ritorno hr è uguale a 3222091460. Ho provato a passare un file .mp3 alla funzione e, ovviamente, funziona, quindi non sono coinvolti url-human-failure.
MF_OBJECT_TYPE ObjectType = MF_OBJECT_INVALID;
IMFSourceResolver* pSourceResolver = NULL;
IUnknown* pUnkSource = NULL;
// Create the source resolver.
hr = MFCreateSourceResolver(&pSourceResolver);
if (FAILED(hr))
{
qDebug() << "Failed !";
}
// Use the source resolver to create the media source.
hr = pSourceResolver->CreateObjectFromURL(
sURL, // URL of the source.
MF_RESOLUTION_MEDIASOURCE, // Create a source object.
NULL, // Optional property store.
&ObjectType, // Receives the created object type.
&pUnkSource // Receives a pointer to the media source.
);
Il MFCreateSourceResolver funziona bene, ma CreateObjectFromURL non riuscire :(
Così ho due domande per voi ragazzi:
- è possibile codificare i file audio prime file AAC usando windows media foundation?
- Se sì, cosa devo leggere per ottenere ciò che voglio?
Voglio sottolineare che non posso usare ffmpeg o libav perché non posso permettermi alcuna licenza per il mio software e non voglio che sia sotto la licenza GPL. Ma se ci sono alternative alle basi multimediali di Windows per codificare i file audio grezzi su aac, sarei lieto di ascoltarli.
E infine, scusa per il mio pessimo inglese, questa ovviamente non è la mia lingua madre e mi dispiace se ho fatto sanguinare gli occhi. (E felice se ti ho fatto ridere)
have a nice day
Ciao Roman e grazie mille per la risposta. Ha reso le cose molto chiare e non posso ringraziarti abbastanza per il tuo tempo. Vado con l'encoder AAC da WMF per ottenere raw AAC e vedere cosa posso fare da lì. Se posso chiederti altri 2 minuti di conoscenza, dato che sono praticamente un principiante nella codifica audio ... Non riesco a trovare alcun esempio di codice per aiutarmi a capire quali passi devo seguire per trasformare pcm in aac. Come ho capito ora grazie a te, ho bisogno di creare un'interfaccia IMFTransform, impostare input raw e output aac, impostare la durata del campione e chiamare ProcessOutput. È così semplice? –
Purtroppo non sono a conoscenza del buon codice di esempio di riferimento. Tuttavia, in passato avevo lavorato qualche volta, quindi so che funziona bene. Sì, ciò di cui hai fondamentalmente bisogno è seguire [AAC Encoder] (http://msdn.microsoft.com/library/dd742785%28v=vs.85%29.aspx) e creare un'istanza della classe MFT, impostare il tipo di media di input, impostare l'output tipo di supporto (attentamente!), quindi premere i dati PCM con 'ProcessInput' e tirare i dati AAC con' ProcessOutput'. –