2012-01-16 23 views
5

AVFoundation ve kod çözme işleminde yeni bir kullanıcıyım. Bir h264 video dosyasının kodunu çözmem ve onu iPhone'da oynatmam gerekiyor ... bana bunu yapmak için bana rehberlik edebilir.ios kod çözme h264 in ios

Bunu yapmak için ffmpeg veya üçüncü taraf kitaplığı kullanmak istemiyorum. Bildiğim kadarıyla AVFoundation kodlamasını kullanarak bildiği gibi

float bitsPerPixel; 
CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions(currentFormatDescription); 
int numPixels = dimensions.width * dimensions.height; 
int bitsPerSecond; 

// Assume that lower-than-SD resolutions are intended for streaming, and use a lower bitrate 
if (numPixels < (640 * 480)) 
    bitsPerPixel = 4.05; // This bitrate matches the quality produced by AVCaptureSessionPresetMedium or Low. 
else 
    bitsPerPixel = 11.4; // This bitrate matches the quality produced by AVCaptureSessionPresetHigh. 

bitsPerSecond = numPixels * bitsPerPixel; 

NSDictionary *videoCompressionSettings = [NSDictionary dictionaryWithObjectsAndKeys: 
              AVVideoCodecH264, AVVideoCodecKey, 
              [NSNumber numberWithInteger:dimensions.width], AVVideoWidthKey, 
              [NSNumber numberWithInteger:dimensions.height], AVVideoHeightKey, 
              [NSDictionary dictionaryWithObjectsAndKeys: 
              [NSNumber numberWithInteger:bitsPerSecond], AVVideoAverageBitRateKey, 
              [NSNumber numberWithInteger:30], AVVideoMaxKeyFrameIntervalKey, 
              nil], AVVideoCompressionPropertiesKey, 
              nil]; 
if ([assetWriter canApplyOutputSettings:videoCompressionSettings forMediaType:AVMediaTypeVideo]) { 
    assetWriterVideoIn = [[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeVideo outputSettings:videoCompressionSettings]; 
    assetWriterVideoIn.expectsMediaDataInRealTime = YES; 
    assetWriterVideoIn.transform = [self transformFromCurrentVideoOrientationToOrientation:self.referenceOrientation]; 
    if ([assetWriter canAddInput:assetWriterVideoIn]) 
     [assetWriter addInput:assetWriterVideoIn]; 
    else { 
     NSLog(@"Couldn't add asset writer video input."); 
     return NO; 
    } 
} 
else { 
    NSLog(@"Couldn't apply video output settings."); 
    return NO; 
} 

return YES; 

Bu konuda tamamen naif değilim burada ... ... mümkündür Ben kodlama için ama hiç emin kullanılır düşünce kodu yardım lütfen .. .from nerede /// basit bir çözüm MPMoviePlayerController kullanmaktır

sayesinde

+0

Aynı şeyi yapmaya çalışıyorum bir çözüm buldunuz mu? –

+0

proje iptal edildi ... çözümü bulamadık ... –

cevap

0

başlatın. Girdi bir mov veya mv4 dosyası (yerel dosya sisteminden veya bir URL'den) alır.

Başka bir seçenek AVPlayer sınıfını kullanmaktır. o yardımcı olur

Umut,

David

0

Sen bakın ve resmi örnek kod inşa edebilirsiniz: AVPlayerDemo nasıl çalıştığını görmek için. Video dosyalarını oynatmak ve performansı mükemmel olmak için AV Foundation framework'ü, temel olarak AVPlayer API'lerini kullanır. AVPlayerDemo tarafından bir video dosyasını oynatmak için video dosyalarını iOS cihazınıza kopyalayıp, AVPlayerDemo App uygulamasında iPod kitaplığını seçmelisiniz.