2011-07-31 9 views
2

私は2つのサービスを実行しています.1つはリアルタイムでファイルをトランスコードし(ffmpeg)、もう1つはhttp(nginx)で公開します。私が現在持っている問題は、ffmpegがトランスコードを開始し、nginxを使ってファイルにアクセスすると、書き込まれたバイトの一部だけがダウンロードされるということです。nginxストリームに、現在書き込み中のダウンロード用のファイルを置くことはできますか?

質問:書き込みが完了するまで現在書き込まれているファイルをストリームするような方法でnginxを設定することは可能ですか?ローカルコンピュータに完全なファイルがありますか?

ありがとうございました

答えて

0

Nginx自身でこれを行うことはできません。トランスコードの進捗状況を監視し、要求をサービスするアプリケーション(php、perl、pythonなど)が必要です。chunked transfer encoding本質的に、クライアントとの接続を開いたままにして、利用可能なデータが多くなるとデータを配信します。

0

私は非常に似た問題を抱えていました。私はffmpegがまだファイルをトランスコードしている間にストリーミングを始める方法を知らないが、ここに私の修正があった:

私はシステムコールを作ったphpスクリプトを持っていた。スクリプトは一時ファイルへの書き込みをffmpegしていました。 ffmpegを呼び出す前に、一時ファイルが並行処理の問題を解消するために存在するかどうかを確認しました。もしそうなら、それは実際のファイルが存在するまで待った。

ファイルの変換が完了すると、一時ファイルの名前が実際のファイルに変更され、http要求がトランスコードされたファイルにリダイレクトされました。

関連する問題