GData YouTube загрузить видео отсутствует аудио - PullRequest
1 голос
/ 29 сентября 2011

Я использую GData Api для загрузки видео на YouTube из приложения IOS. Он успешно загружает видео, но в нем отсутствует звук.

Я использую видео формат .mp4. У кого-нибудь есть подсказка?

Спасибо

-(BOOL) setupWriter{
    NSError *error = nil;
//  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//  NSString *documentsDirectory = [paths objectAtIndex:0];
//  NSURL * url = [NSURL URLWithString:documentsDirectory];
//  url = [url URLByAppendingPathComponent:@"om.mp4"];


    //  NSString *path = [documentsDirectory stringByAppendingPathComponent:@"om.mp4"];
    //  [data writeToFile:path atomically:YES];


NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/movie.mp4"]];
_videoWriter = [[AVAssetWriter alloc] initWithURL:[NSURL fileURLWithPath:path] fileType:AVFileTypeQuickTimeMovie
                                            error:&error];
NSParameterAssert(_videoWriter);


    // Add video input
NSDictionary *videoCompressionProps = [NSDictionary dictionaryWithObjectsAndKeys:
                                       [NSNumber numberWithDouble:128.0*1024.0], AVVideoAverageBitRateKey,
                                       nil ];

NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                               AVVideoCodecH264, AVVideoCodecKey,
                               [NSNumber numberWithInt:192], AVVideoWidthKey,
                               [NSNumber numberWithInt:144], AVVideoHeightKey,
                               videoCompressionProps, AVVideoCompressionPropertiesKey,
                               nil];

_videoWriterInput = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo
                                                        outputSettings:videoSettings] retain];


float   angle = M_PI/2;  //rotate 180°, or 1 π radians
_videoWriterInput.transform = CGAffineTransformMakeRotation(angle);


NSParameterAssert(_videoWriterInput);
_videoWriterInput.expectsMediaDataInRealTime = YES;


    // Add the audio input
AudioChannelLayout acl;
bzero( &acl, sizeof(acl));
acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono;


NSDictionary* audioOutputSettings = nil;          
    // Both type of audio inputs causes output video file to be corrupted.
if( NO ) {
        // should work from iphone 3GS on and from ipod 3rd generation
    audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                           [ NSNumber numberWithInt: kAudioFormatMPEG4AAC ], AVFormatIDKey,
                           [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey,
                           [ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey,
                           [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
                           [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey,
                           nil];
} else {
        // should work on any device requires more space
    audioOutputSettings = [ NSDictionary dictionaryWithObjectsAndKeys:                       
                           [ NSNumber numberWithInt: kAudioFormatAppleLossless ], AVFormatIDKey,
                           [ NSNumber numberWithInt: 16 ], AVEncoderBitDepthHintKey,
                           [ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey,
                           [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey,                                      
                           [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey,
                           nil ];
} 

_audioWriterInput = [[AVAssetWriterInput 
                      assetWriterInputWithMediaType: AVMediaTypeAudio 
                      outputSettings: audioOutputSettings ] retain];

_audioWriterInput.expectsMediaDataInRealTime = YES;




    // add input
[_videoWriter addInput:_videoWriterInput];
[_videoWriter addInput:_audioWriterInput];

return YES;
}

это установщик, который я использую для записи звука, что-то не так в этом ????

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

На форуме поддержки CamStudio :

.MOV / .MP4 / .3GPP

Файлы MOV / MP4 / 3GPP основаны на индексах.Проще говоря, это означает, что в файле есть индекс, который указывает нам конкретное место, где в файле присутствуют видео и аудио кадры.Без индекса практически невозможно узнать, где находятся данные для конкретного видео или аудио кадра.Этот индекс содержится в так называемом атоме 'moov' в файле.

Теперь, если индекс находится в начале файла, он позволит обрабатывать видео как и когда последующие байтыфайл загружен.С другой стороны, если индекс находится в конце, обработка видео не может начаться до тех пор, пока не будет завершена вся загрузка - так как индекс нужен для интерпретации файла.

Следовательно, для файлов MOV / MP4 / 3gppмы предпочитаем атом "moov" в начале файла - также известный как файл "быстрого старта" MP4 / MOV.В Интернете доступны инструменты для выравнивания файла MOV.Обычно программное обеспечение для редактирования / экспорта видео будет иметь опции для создания ваших файлов с атомом moov в начале, а не в конце вашего файла.Если вы используете инструменты редактирования Apple, ознакомьтесь с этой статьей о том, как создать файл MP4 / MOV для «быстрого старта» ./p>

Вот список некоторых известных форматов, которые поддерживает YouTube:

Файлы WebM - видеокодек Vp8 и аудиокодеки Vorbis

.MPEG4, 3GPP и MOV файлы - как правило, поддерживают видеокодеки h264, mpeg4 и аудиокодек AAC

.AVI - Многиекамеры выводят этот формат - как правило, видеокодек - MJPEG, а аудио - PCM

.MPEGPS - обычно поддерживает видеокодек MPEG2 и аудио MP2

.WMV

.FLV - Adobe-FLV1 видеокодек, MP3 аудио

1 голос
/ 29 сентября 2011

Я работал с GData API последние несколько дней, и у меня не было подобных проблем. Я бы посоветовал вам проверить типы файлов, поддерживаемые Youtube: http://www.google.com/support/youtube/bin/answer.py?answer=55744. Можете ли вы проверить, что файл, который вы загружаете, действительно содержит аудио? Что Quicktime говорит о формате вашей аудио дорожки? Youtube рекомендует использовать AAC (насколько я могу судить).

...