【问题标题】:Live video from raw tcp packets来自原始 tcp 数据包的实时视频
【发布时间】:2017-06-07 16:27:20
【问题描述】:

我们正在尝试制作一个小型 Python 应用程序,该应用程序使用 scapyffplay 显示来自嗅探数据包的实时视频。这是我们硕士学位研究项目的一部分。目标是制作一个概念验证应用程序,用于监视通过 tcp 传输的视频。
我们有一个写入.dat 文件的工作脚本,然后我们使用ffplay 读取它。它工作正常,但有很多延迟,我们认为我们可以做得更好:直接将其流式传输到ffplay,而无需将原始数据写入文件。

这是我们的脚本:

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

关于我们如何实现这一目标的任何想法?谢谢。

【问题讨论】:

    标签: python video tcp ffmpeg scapy


    【解决方案1】:

    以二进制模式而不是文件写入stdout,并将输出通过管道传输到ffplay

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

    然后像这样运行它:

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

    - 表示stdin

    【讨论】:

    • 感谢我们找到了自己的解决方案,但这就是我们所做的!
    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2015-07-20
    • 2017-07-08
    • 2012-08-26
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多