次のシナリオがあります。
(VideoLan) VLC からタブレット、Android、BB、その他のデバイスに (24 時間) ビデオをストリーミングしたいと考えています。VLC のプレイリストの翌日の項目は、次のようなファイルへのパスのみを含む .conf ファイルを使用して、1 日に 1 回または 2 回キューに入れる必要があります。
"C:\Users\Max\Videos\dog.mp4"
"http://www.myserver.tv/mobile/video/cat.mp4"
...
次に、このファイルからすべての行を読み取り、ストリーミング サーバーのプレイリストに追加します。次のコマンドを使用して、VLC の 1 つのインスタンスのプレイリストに単一のファイルを追加できます。
vlc --started-from-file --playlist-enqueue "C:\Users\Max\Videos\dog.mp4"
私は小さなバッチファイルを書きました:
@echo off
cls
setlocal
FOR /F "tokens=*" %%i IN (playlist.conf) DO vlc --started-from-file --playlist-enqueue --no-playlist-autostart %%i ^
:sout=#transcode{soverlay,ab=64,samplerate=44100,channels=2,acodec=mp4a,vcodec=h264,width=480,height=320,fps=25,vb=400,venc=x264{vbv-bufsize=10000, partitions=all,level=12,no-cabac,subme=7, threads=4, ref=2,mixed-refs=1,bframes=0,min-keyint=1,keyint=50,trellis=2, direct=auto, qcomp=0.0,qpmax=51}}:gather:rtp{mp4a-latm,sdp=rtsp://192.168.1.228:1234/stream.sdp}
今私の問題は、バッチファイルが単にすべての行を実行してキューに入れるのではなく、ビデオが終了するのを待って、次のビデオが再生されるまで VLC-Player を閉じるまで待つことです。基本的に、別のユーザーが Linux サーバーで解決したかったこの問題のようなものです。VLC コマンドラインコマンドのドキュメントはここにあります=> --playlist-enqueue を検索してください
--one-instance-when-started-from-file の問題だと思っていましたが、このオプションはデフォルトで有効になっているため、他に何かが欠けていると思います。
また、バッチ ファイルを変更して、VLC を起動し、上記のコマンド ラインで行ったように単一のコマンドを実行するようにしましたが、機能しません。最初のビデオの再生を開始し、終了して VLC のインスタンスが閉じられるまで待機し、新しいインスタンスを開き、構成ファイルから次のビデオを再生します。
あなたがまったく別のアイデアを持っているなら、私はそれらも高く評価します.
12.09.13 - 11:28: わかりました。同期呼び出しと非同期呼び出しの方法の問題のようです。ここからphp の小さなコード部分を見つけて、ビデオをプレイリストに明らかに非同期で追加するスクリプトを呼び出します。
for ($i=0; $i<count($convert); $i++){
system('php -f "C:\xampp\htdocs\playlist\playlist_2.php" args '.urlencode($convert[$i]).'"');
}
「変換」は、上記のプレイリスト ファイルの名前を保持する配列です。
- PHPは他のファイル(playlist_2.php)を呼び出します
- VLCが開きますが
- 最初に呼び出した php ファイル (playlist.php) は、ループを続行し、playlist_2.php を呼び出して VLC の別のインスタンスを開くまで、VLC が閉じるのを待機します。(望ましくない動作)
だから私は以前と同じ効果があります。何か案は?