переименовать файл с помощью UISaveVideoAtPathToSavedPhotosAlbum? - PullRequest
3 голосов
/ 10 ноября 2009

но я хочу загрузить видео с URL и переименовать файл этого видео перед сохранением. Я использую UISaveVideoAtPathToSavedPhotosAlbum ? Любая помощь ... что мне нужно сделать?

 NSData *imageData = [NSData dataWithContentsOfURL:[NSURL  
 URLWithString:@"www.xyz.com/image.mp4"]];

Ответы [ 2 ]

4 голосов
/ 10 ноября 2009

Вы бы сделали что-то вроде этого:

- (void) downloadVideo
   NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.xyz.com/image.mp4"]];
   NSString *tempPath = [NSString stringWithFormat:@"%@/%@", NSTemporaryDirectory(), temp.mp4];
   [imageData writeToFile:tempPath atomically:NO];
   UISaveVideoAtPathToSavedPhotosAlbum (@ tempPath, self, @selector(video:didFinishSavingWithError: contextInfo:), nil);
);

- (void) video: (NSString *) videoPath
    didFinishSavingWithError: (NSError *) error
    contextInfo: (void *) contextInfo {
  NSLog(@"Finished saving video with error: %@", error);
}

Есть две вещи, на которые нужно обратить внимание:

  1. Убедитесь, что вы указали схему URL. Это не браузер, он не будет пытаться автоматически заполнить http и угадать для вас.
  2. Если это в главном потоке, это вызовет синхронный останов, пока dataWithContentsOfURL: происходит. Если основной поток останавливается более чем на 20 секунд, телефон предположит, что приложение застряло в бесконечном цикле, и уничтожит его. Поэтому, если этот код находится в основном потоке, вам нужно либо переместить его в фоновый поток, либо перейти к асинхронной загрузке с помощью NSURLConnection.
0 голосов
/ 04 мая 2012

У меня возникла та же проблема, я решил ее, изменив расширение сохраняемого файла с .mpg на .mp4. очевидно UISaveVideoAtPathToSavedPhotosAlbum ожидает правильное расширение, хотя из документации мне не ясно, что это требование:

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIKitFunctionReference/Reference/reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...