2017-06-06 3 views
0

scapyffplayを使用して、スニッフィングされたパケットからライブビデオを表示する小さなPythonアプリケーションを作成しようとしています。これは私達の修士号の研究プロジェクトの一部です。目標は、tcp経由で転送されるビデオを念頭に置いた概念証明アプリを作ることです。
.datファイルに書き込みを行い、次にffplayを使用して読み取る作業スクリプトがあります。それは大丈夫ですが、待ち時間が長く、私たちはもっとうまくいくと思っています。生データをファイルに書き込む必要なく、直接ffplayにストリームします。生のtcpパケットからのライブビデオ

は、ここに私たちのスクリプトです:

from scapy.all import * 
import os 

export_dat = open("data.dat", "a") 

def write_packet_raw(packet): 
    export_dat.write(str(packet.getlayer(Raw))) 

def realtime_packet(): 
    p = sniff(iface="wlan0", filter="tcp and (port 5555)", count=5000, prn=write_packet_raw) 

realtime_packet() 
export_dat.close() 

そして、我々は起動:ffplay -window_title Videostream -framedrop -infbuf -f h264 -i data.dat

我々はそれを達成することができます方法上の任意のアイデア?ありがとう。

答えて

2

ファイルの代わりにstdoutにバイナリモードで書き込み、出力をffplayにパイプします。

import sys 
sys.stdout.buffer.write(...) 
sys.stdout.flush() 

そして、好きなことを実行します。

python3 sniff.py | ffplay -f h264 -i -

-手段stdinを。

+0

私たち自身の解決策を見つけましたが、それは私たちがやったことです! – benuuts

関連する問題