objectivecdeveloper
objectivecdeveloper

Reputation: 1050

GData youtube video upload missing audio issue

I am using following code to upload .mov file to youtube. It upload successfully but the video don't have any audio. Please tell me if I am doing something wrong....

- (void)uploadVideoFile {

  NSString *devKey = @"AI39si4w9QSgQj1JzNxzuiHhFbTm2iLt3mRerGh0UNvlryRPGgQhgIaJA8l95j4YwdC1jBIz6_JaX8eJm2GMgE06FtvIu7E9Sg";

  GDataServiceGoogleYouTube *service = [self youTubeService];
  [service setYouTubeDeveloperKey:devKey];

  NSString *username = txtYName.text;

  NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username];

  // load the file data
  NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/movie.mov"]] retain];
  NSData *data = [NSData dataWithContentsOfFile:path];
  NSString *filename = [path lastPathComponent];

  // gather all the metadata needed for the mediaGroup
  NSString *titleStr = txtName.text;
  GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr];

  NSString *categoryStr = @"Comedy";
  GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr];
  [category setScheme:kGDataSchemeYouTubeCategory];

  NSString *descStr = @"this is just test";
  GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr];

  NSString *keywordsStr = @"SuperShredBros";
  GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithString:keywordsStr];

  BOOL isPrivate = NO;

  GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
  [mediaGroup setMediaTitle:title];
  [mediaGroup setMediaDescription:desc];
  [mediaGroup addMediaCategory:category];
  [mediaGroup setMediaKeywords:keywords];
  [mediaGroup setIsPrivate:isPrivate];

  NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:path
                                             defaultMIMEType:@"video/quicktime"];

  // create the upload entry with the mediaGroup and the file data
  GDataEntryYouTubeUpload *entry;
  entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
                                                        data:data
                                                    MIMEType:mimeType
                                                        slug:filename];

  SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
  [service setServiceUploadProgressSelector:progressSel];

  GDataServiceTicket *ticket;
  ticket = [service fetchEntryByInsertingEntry:entry
                                           forFeedURL:url
                                             delegate:self
                             didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];

  [self setUploadTicket:ticket];
//  [self updateUI];
}

please help me. Thanks in advance.

Upvotes: 5

Views: 714

Answers (4)

user907729
user907729

Reputation:

change your output audio setting.... it should be like this.....

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];

Upvotes: 1

UPT
UPT

Reputation: 1480

Following should help you:

GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
[mediaGroup setMediaTitle:title];
[mediaGroup setMediaDescription:desc];
[mediaGroup addMediaCategory:category]; 
[mediaGroup setMediaKeywords:keywords];
[mediaGroup setIsPrivate:NO];

NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:outputURL.relativePath defaultMIMEType:@"video/quicktime"];

GDataEntryYouTubeUpload *entry;
entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup data:data MIMEType:mimeType slug:filename];

SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
[service setServiceUploadProgressSelector:progressSel];

GDataServiceTicket *ticket;
ticket = [service fetchEntryByInsertingEntry:entry forFeedURL:url delegate:self didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];

for reference: Youtube Upload Quality

Upvotes: 0

Nilesh Kikani
Nilesh Kikani

Reputation: 2618

I think you need to change mime type as below

NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:fetchPath
                                           defaultMIMEType:@"video/mp4"];

This thing works fine for me and also one more thing i am uploading .Mov file to not only .mp4 or .m4a or .flv

Upvotes: 0

sagarcool89
sagarcool89

Reputation: 1376

i think Youtube supports flv and mp4 format video files. so please change mimetype. Hope you get expected results.

Upvotes: 0

Related Questions