2012-11-27 4 views
7

私は継続的にビデオをキャプチャするiphoneアプリを作成したいと思います.h.264を10秒間隔でエンコードし、ストレージサーバーにアップロードします。これはavassetwriterで行うことができ、新しいファイルを作成するときに古いファイルを削除し続けることができます。しかしながら、フラッシュメモリは書き込みサイクルが限られているので、フラッシュを介して数千回の書き込みサイクルの後にこの方式がフラッシュを破壊する。 avassetwriterをメモリにリダイレクトする方法、またはiphoneでラムドライブを作成する方法はありますか?は、avassetwriterがメモリに出力することが可能です

ありがとうございます!

+1

"しかし、フラッシュメモリには書き込みサイクルが限られているので、この方式はフラッシュの書き込みサイクル数千回後にフラッシュを破壊します。"メモリ管理はこのように動作しません一時ファイルを作成して上書きするプロセスの数。あなたが何を言っているかは、あなたが常に同じエリアに書いていれば真実になりますが、シェルドムはOSでそのように実装されます。 –

+0

これを行う方法が見つかりましたか? – user1244109

+0

私は同じことを実装しようとしています。私は2つのAVAssetWritersの間で切り替えるほとんどの作業ソリューションを持っています。ライター間で切り替えるときにオーディオサンプルをバッファリングする必要があるので、問題にぶつかります。 CMSampleBufferCreateCopyを使用してsampleBufferのコピーを作成します。 user1244109 - 進行状況はありますか? – user331244

答えて

-1

なぜデータをファイルに書き込むのですか?キャプチャデータをメモリにコピーしてメモリからサーバにプッシュすることはできませんでしたか?

+0

私はそれをやりたいのですが、Appleが提供するavassetwriter APIはファイルURLにしか書き込めません。 –

+0

むしろ、私はなぜavassetwriterを使用するのかという意味ですか?あなたは確かにどこかからデータを得て、それをavassetwriterに渡しているので、仲介者をバイパスして、そこから直接データをアップロードしてみませんか? – bloopletech

+8

AVAssetWriterはデータを書き込むだけでなく、ハードウェアのビデオエンコードを使用して効率的に圧縮します。 – kolyuchiy

1

はいavassetwriterは、ハードウェアデコーダに到達する唯一の方法です。書き込まれている間にmoov原子が得られないので、avfoundationやmpmediaplayerベースのプレイヤーはそれを読み取ることができません。いくつかの選択肢があり、定期的にasassetwriterを停止し、バックグラウンドスレッドでファイルに書き込んで、ムービーをより小さな完全なファイルに効果的に分割します。またはサーバ側で不完全なmp4を扱うことができたら、生のナルを解読し、欠けているmoov原子を再作成する必要があります。あなたが使用しているffmpeg mov.cが見えるソースであれば。これは、不完全なmp4ファイルが失敗することもあります。

+0

この質問への私の答えを見てくださいhttp://stackoverflow.com/questions/13851481/http-live-streaming-server-on-iphone/13889048#13889048 –