0

コンピューターに video_2.m4v というファイルがあり、別のプログラムがそこにデータ (ビデオ) を書き込むために使用しているため、ファイル サイズが毎秒増加しています。私がやりたいことは、ストリーミング アップロードのようなものを作成することです。ファイルが書き込まれている間、サーバーにアップロードされます。Windows 7でこのbashスクリプトを使用しています:

@echo off
echo user USER_NAME> ftpcmd.dat
echo PASSWORD>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo cd ROOT_PATH>> ftpcmd.dat
echo put %1>> ftpcmd.dat

ftp -n -s:ftpcmd.dat ftp.example.com
del ftpcmd.dat

これは問題なく動作しますが、現在のファイルの状態 (サイズ) を取得してアップロードするだけです。RTMPサーバーを使用する必要があると言わないでください:)。

VLCは実際に私が望むことをしますが、バイナリモードに切り替えることはできません. 私は次のコードを使用しています:

set VLC_EXE=C:\Program Files (x86)\VideoLAN\VLC\vlc.exe
set SOUT_FTP_DOMAIN=ftp.example.com
set SOUT_FTP_PORT=21

set SOUT_FTP_USERNAME=user
set SOUT_FTP_PASSWORD=password
set SOUT_FTP_PATH=www/example.com
set SOUT_FILENAME=test

"%VLC_EXE%"  D:\video_1.m4v :sout=#std{access=ftp,mux=mp4,dst=ftp://%SOUT_FTP_USERNAME%:%SOUT_FTP_PASSWORD%@%SOUT_FTP_DOMAIN%:%SOUT_FTP_PORT%/%SOUT_FTP_PATH%/%SOUT_FILENAME%.mp4} :sout-keep vlc://quit
4

2 に答える 2

0

これは、ストリームの書き込みに使用しているプログラムがファイルへの排他的アクセスを必要とするかどうかによって異なります。一部のコンバーターは、排他的アクセスを必要としない機能を提供する場合と、そうでない場合があります。アップロードアプリケーションにも同様の制限がある場合があります。または、サイズを1回だけ確認してから、その量を正確にアップロードする場合があります。その場合、機能しているように見えますが、開始時に変換が完了したファイルの部分のみがアップロードされます。アップロード。

現在変換中のファイルを再生して、コンバーターに排他的アクセスが必要かどうかを確認できます。コンバーターがファイルに書き込むときにファイルを再生できる場合は、アップロードに使用しているソフトウェアのみに依存します。FTPを使用してファイルを転送しています。FTPプロトコルでは、ファイルの前にファイルサイズを送信する必要がないため(引用が必要だと思います)、使用しているツールを使用してこれを実行できる場合があります。

于 2012-06-19T19:02:51.207 に答える
0

プログラミングコミュニティなので、そういう観点からお答えします。技術的には、必要なことを行う FTP クライアントを実装できます (つまり、プロトコルでこれが許可されます)。ただし、クライアントは、ファイルのサイズがその場で変更される可能性を認識する必要があります。クライアントのアップロード コードは 2 つの方法で記述できます。(1) ファイル サイズを X に取得して X バイトをアップロードする方法と、(2) ファイルからデータ ブロックを読み取り、何かがファイルの終わりを示すまでアップロードする方法です。

あなたの特定のケースでは、データが別のアプリケーションによって生成されるため、送信を停止するコマンドが何であるかをほとんど理解できません。

また、必要なことをバッチ ファイルだけで実行しようとしている場合は、間違ったコミュニティに属しており、いずれにしても ftp.exe では実現できません。

于 2012-06-19T18:59:26.340 に答える