YOLO v5 Series - HTTP-FLV - FFmpeg & (HTML5 + FLV.js ) & (PyAV)


FLV.js

c 复制代码
var ipcVideo = document.getElementById('ipcVideo');
var triggerPredict = function() {
    var flvPlayer = null, url = '', metaArrived = false;
    var initializePlayer = function() {
        url = $('#ipcFlv').val();
        if (url && flvjs.isSupported()) {
            flvPlayer = flvjs.createPlayer({
                isLive: true,
                type: 'flv',
                url: url
            }, {
                isLive : true
            });
            flvPlayer.attachMediaElement(ipcVideo);
            flvPlayer.load();
            //
            metaArrived = false;
            flvPlayer.on(flvjs.Events.ERROR, (errorType, errorDetail, errorInfo) => {
                console.dir('ERROR:', errorType, errorDetail, errorInfo);
                if (errorDetail.includes('SourceBuffer')) {
                    recoverPlayer();
                }
            });
            flvPlayer.on(flvjs.Events.METADATA_ARRIVED, ()=>{
                console.dir('METADATA_ARRIVED', arguments)
                if (metaArrived) {
                    // 第二次发来Meta信息 => 断线后重连了 => 重新初始化控件
                }
                metaArrived = true;
            });
            //
            flvPlayer.play().catch(e => {
                console.dir('AutoPlay Failed', e);
            });
        }
    }
    var destroyPlayer = function() {
        if (flvPlayer) {
            try {
                flvPlayer.pause();
                flvPlayer.unload();
                flvPlayer.detachMediaElement();
                flvPlayer.destroy();
            } catch (e) {
                console.dir('ERROR:', e);
            }
            flvPlayer = null;
        }
    }
    var restartPlayer = function() {
        destroyPlayer();
        initializePlayer();
    };

    restartPlayer();
};


PyAV

c 复制代码
import av
import cv2

def play(token = ''):
    url = ('http://localhost:9999/flv?port=1935&app=live&stream=%s' % (token))
    container = av.open(url)
    for frame in container.decode(video=0):
        img = frame.to_ndarray(format='bgr24')
        cv2.imshow('PyAV-http-flv', img)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

if __name__ == '__main__':
    token = '1744010889050'
    play(token)
相关推荐
蜗牛互联网1 小时前
Java标准HTTP调用多模态模型的票据抽取前置校验
java·人工智能·python·http
晨间晓3 小时前
目标从哪个区域去了哪里?我用 YOLO + ByteTrack 做了多 ROI 区域流转分析
yolo
ofoxcoding7 小时前
Gemini TTS 与 ElevenLabs 语音合成实测:同一段视频旁白效果对比
ai·ffmpeg·音视频
YOLO数据集集合7 小时前
滑坡检测数据集 | 滑坡检测 地质灾害 无人机巡检 应急响应 目标检测 YOLO格式 深度学习数据集 计算机视觉10670期
深度学习·yolo·目标检测·计算机视觉·无人机·滑坡
晨间晓8 小时前
目标进了这个区域多久?我用 YOLO + ByteTrack 做了 ROI 占用与停留分析
yolo
YOLO数据集集合10 小时前
小麦穗检测数据集 | 小麦穗检测 植物表型 密集目标检测 农业AI9182期
人工智能·yolo·目标检测·机器学习·目标跟踪·小麦穗
深蓝电商API17 小时前
HTTP/2 协议逆向:从 Fiddler 抓不到包说起
爬虫·网络协议·http·fiddler
fthux19 小时前
开源小工具 Who Arrives:看看你的公网 IP、地区、时区和网络
http·开源·github
_大峰_1 天前
索尼 A7M4 误删视频恢复实战:基于原始卡镜像重建 MP4 数据
ffmpeg·数据恢复·音视频·mp4·exfat