5

私のアプリの機能の 1 つは、mp4 ファイルをダウンロードしてローカルの電話アルバムに保存することです。

それ以来、いくつかのアプローチを試しましたが、結果は常に同じです。シミュレーターでは機能しましたが、実際の iPhone では機能しませんでした。Xcode はバージョン 5.0.1、iPhone 4 です。

以下は、ASIHttpRequest ライブラリを使用してここに投稿する前に最後の試行で適用したコードであり、結果は同じです。シミュレーターでは機能しましたが、電話自体では機能しませんでした。

  1. ダウンロード:

    ASIHTTPRequest* request = [ASIHTTPRequest requestWithURL:url]; // url is the address to the mp4 file
    
    NSString* filePath = [NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), filename]; //filename is the file I save to, e.g. xxx.mp4
    
    [request setDownloadDestinationPath:filePath];
    [request setDelegate:self];
    [request setDidFinishSelector:@selector[ASIRequestDone:)];
    [request setDidFailSelector:@select[ASIRequestFail:)];
    
  2. ダウンロードが終わったらフォトアルバムに保存(ASIRequestDoneデリゲート中)

    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(filePath))
    {
        //comes to here when running in simulators
        UISaveVideoAtPathToSavedPhotosAlbum(filePath, self, @selector(video:didFinishSavingWithError:cotextInfo:),nil);
    } 
    else 
    {
        //always comes to here when running on the actual iPhone.
    }
    

pathFile を確認しました。これです

/private/var/mobile/Applications/xxxxxxxxxx/tmp/xxxxx.mp4

これは私には問題ありません。私が得ていないのは、シミュレーターで実行すると正常に動作するため、次に何をすべきかわからないということです。(写真アルバムへのアクセス許可も確認しましたが、アプリには許可されています)。

また、互換性のチェックを削除しようとし、メソッドに直接進みましたがUISaveVideoAtPathToSavedPhotosAlbum、デリゲートでエラーはスローされませんでしたdidFinishSavingWithError。ただし、ビデオはフォトアルバムにも表示されませんでした. 電話はビデオがアルバムに表示される互換性がないと言っているように見えるので、それは正しいと思います. 繰り返しますが、私の問題は、シミュレーターで動作し、実際の iPhone でこれを修正するにはどうすればよいかということです。たとえば、ビデオに互換性がないと考えるのはなぜですか? mp4自体と関係がありますか、それともダウンロード段階で関係がありますか? 問題を解決するために次に何ができますか? (ps。私はmp4ファイルも管理しています。あなたが知っているiphoneでのmp4互換性のリストはありますか?ファイルが電話で互換性がないのはおそらく本物だと思います(しかしシミュレーターでは!?))

4

1 に答える 1

5

私の質問に対する答えが見つかりました。同じ問題に苦しんでいる人を助けることができれば幸いです. ビデオをギャラリーに保存する場合、シミュレーターと実際の電話の間の要素はビデオの解像度であることがわかります。具体的に言うと:

UIVideoAtPathIsCompatibleWithSavedPhotosAlbum の互換性チェックは、実際の電話では失敗しますが、サンプル クリップ capturrd が 1080p の場合、シミュレーターでは成功します。投稿から 1 週間後、幸運にもこのリンクにたどり着きました。

アセット ライブラリと互換性のあるビデオ形式は?

そして、代わりに 720p のビデオ クリップをキャプチャすることで同様の実験を行い、すべてのファイルをギャラリーに保存することができました。奇妙なことに、実際の iPhone は HLS ストリームを 1080p で再生できます。ただし、720p でない限り、クリップは保存されません。そして、誤解を招くビットは、シミュレーターが実際に 1080p を実行できることです。

于 2014-06-20T20:21:43.050 に答える