Sto cercando di creare le miniature per i file video:È possibile far funzionare AVURLAsset senza un'estensione di file?
- (UIImage*) thumbnailForVideoAtURL: (NSURL*) videoURL
{
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
CGImageRef imageHandle = [generator copyCGImageAtTime:kCMTimeZero actualTime:NULL error:NULL];
if (imageHandle) {
UIImage *frameImage = [UIImage imageWithCGImage:imageHandle];
CFRelease(imageHandle);
return frameImage;
} else {
return nil;
}
}
Il problema è che i file video vengono memorizzati in un content-addressable store e non hanno le estensioni. Questo sembra gettare AVURLAsset
fuori, come l'asset viene creato, ma dopo aver letto l'immagine del fotogramma ottengo il seguente errore:
Error Domain=AVFoundationErrorDomain Code=-11828 "Cannot Open" UserInfo=0x167170 {NSLocalizedFailureReason=This media format is not supported., NSUnderlyingError=0x163a00 "The operation couldn’t be completed. (OSStatus error -12847.)", NSLocalizedDescription=Cannot Open}
È questo il documentato o citato da qualche parte? Non posso credere di essere davvero costretto a passare le informazioni sul formato del file attraverso il nome del file. L'argomento options
per l'inizializzatore AVURLAsset
sembra un buon posto per fornire il tipo di file, ma secondo la documentazione non sembra esserci alcun supporto per questo.
PS. Ho testato il codice, lo stesso file con l'estensione corretta produce le miniature bene.
Mi puoi dire? in che modo hai creato l'hard link al file, in realtà ho un tuo video url e devo creare l'anteprima di quel video usando il suo URL –
Intendi un URL di file locale o un normale URL HTTP di YouTube? Un URL di file locale può essere facilmente collegato tramite '[NSFileManager linkItemAtURL: toURL: error:]'. La creazione di una miniatura da un URL video di YouTube HTTP è degna di una [domanda separata] (http://stackoverflow.com/questions/ask), IMHO. – zoul
Ancora non è fissato in iOS7 e '[[AVAudioPlayer alloc] initWithContentsOfURL: Errore url: nil];' non ha alcun problema con i file non avendo estensioni –