pythonまたはShellで任意の種類のコマンドを作成して、vlcで再生またはストリーミングされているビデオから特定のフレームをプルしようとしています。
ビデオファイルがあり、VLCで開き、[再生]をクリックするシナリオを想像してみてください。 pythonまたはShellコマンドを使用して、最初に遭遇したフレームをプルし、何らかの処理を行います。処理が完了すると、ビデオが到達した正確な時間に別のフレームをキャプチャします。
正直なところ、私が再生しているビデオの現在の「時間」(時間:分:秒、または映画で経験したこと)をVLCに提供してもらうことができれば、それでうまくいき、ffmpegを使用できます。 。
Linux14.04を実行しています。
私が再生しているビデオの現在の「時間」をVLCに提供してもらうことさえできれば…
これは行うことができます。 VLCは多くのインターフェースを提供します。 telnetを使用しましょう。
ワンタイムオンデマンド方式:
vlc --extraintf telnet --telnet-port 4212 --telnet-password "foobar" video_file_to_play.avi
または永続的な構成。 VLCを実行しますツール->設定(または Ctrl+P)、次に:
そして
注:この永続的な方法では、VLCを再起動する必要があります。
これで、telnetを使用してVLCを制御できます。プロンプトが表示されたら、正しいパスワードを入力します。例:
$ telnet localhost 4212
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
VLC media player 2.2.2 Weatherwax
Password:
Welcome, Master
> get_time
30
>
ご覧のとおり、現在の再生時間を取得するコマンドはget_time
です。 help
と入力してVLCコマンドの詳細を確認し、quit
と入力して終了します。 snapshot
が役立つかもしれません。
非常に単純なパイプ。ここでは、nc
の代わりにtelnet
を使用しています(そしてfoobar
は私のパスワードです、あなたのパスワードを使用してください):
printf '%s\n' "foobar" "get_time" | nc localhost 4212
私のVLCは以下を返します:
VLC media player 2.2.2 Weatherwax Password: ���� Welcome, Master 87 > Bye-bye!
したがって、head
とtail
を使用して、関連する行のみを抽出します。
printf '%s\n' "foobar" "get_time" | nc localhost 4212 | head -n 4 | tail -n 1
残念ながら、時間分解能は1秒です。現在のフレーム番号などを取得するコマンドが見つかりません。