なぜこれが機能しないのですか?
cat /dev/video1 | mplayer -
それを機能させることができれば、「tee」を使用してmplayerとmencoderにフィードすると同時にビデオを再生および録画できます。
(/ dev/video1:input = 1:norm = NTSCからの)ライブビデオを再生し、同時にラグを発生させずに記録したい。
mplayerはビデオを正常に再生します(顕著なラグはありません)。
mencoderはそれをうまく記録します。
しかし、同時に両方にフィードできるように、/ dev/videoからの出力を「ティー」する方法を理解できません。 (私はそれをエンコードしてすぐにエンコードされたビデオを再生する方法を知っていますが、それはあまりにも多くの遅れをもたらします)。
Mplayerとmencoderがstdinから読み取る場合、 'tee'を使用してこれを解決できます。
どうすればできますか?
[ところで、ラグを追加しない限り、同時に再生と記録ができるすべてのソリューションに満足しています-私はmplayerに慣れていません。ただし、最初にエンコードしてから再生すると、遅れが生じます。]
Stdinから再生するときは、キャッシュをいくつか与える必要があります
cat /dev/video1 | mplayer -cache 1024 -
このキャッシュオプションがないと、「シークに失敗しました。線形ストリームで後方にシークできません」というエラーが発生します。
Mplayerのマニュアルページによると、mplayer -
はstdinから読み取る必要がありますが、mplayerがキーボード入力イベントをstdinから読み取らないようにするには、-noconsolecontrols
も指定する必要があります。
あなたがしたいことは単一のmplayerを使用して可能であるとは思わない。私は尋ねられたこの正確な質問を見つけ、明らかにこうして答えました:
抜粋: [MPlayer-users]同時にカメラのIPストリームを表示して記録しますか?
この作業は、同じmplayerプロセスで実行したいのですが。スレーブモードでファイルにストリームを書き込む方法はありますか?ドキュメントに適切なコマンドがまだ見つかりません。
出来ないと思います。 MPlayerは、ストリームを同時にまたはダンプできます。同時に両方をダンプすることはできません。
ただし、1つのタスクでストリームをダンプし、別のタスクで記録ストリームを再生することはできます。少なくとも、ネットワークトラフィックが2倍になることはありません。
その答えへの 元の質問 はこれでした:
同時に、ストリームを表示し、それをファイルに書き込む(つまり、記録する)可能性も必要です。私のポイントは、次のとおりです。これは同じプロセスです。
実際、私はスレーブモードでmplayerのプロセスを持っています。
$ mplayer -slave -wid id_window camera_address/
そして、記録する必要があるたびに、今回はスレーブではなく、新しいプロセスを開始します。
$ mplayer -dumpvideo camera_address -dumpfile stream.mp4/
この作業は、同じmplayerプロセスで実行したいのですが。スレーブモードでファイルにストリームを書き込む方法はありますか?ドキュメントに適切なコマンドがまだ見つかりません。
ただのアイデアですが、このwikiの投稿をffmpegのWebサイトで見つけました 複数の出力を作成する について説明しています。おそらくあなたは分割することができます/dev/video1
そして、mplayerで重複したストリームを利用しますか?