YOLO v5 Series - FFmpeg & (HTML5 + FLV.js ) & ONNX YOLOv5s Integrating

在这里插入图片描述
Buffer Iterating

const int width = 640, height = 640, channels = 3;
const size_t frame_size = width * height * channels;
vector<char> frame_buffer(frame_size);
vector<float> input_tensor_values(1 * channels * height * width);

while (TRUE) {
	cin.read(reinterpret_cast<char*>(frame_buffer.data()), frame_size);
	size_t bytes_read = cin.gcount();
	if (bytes_read == 0) break;
	if (bytes_read != frame_size) {
		cerr << "Error : " << frame_size << ",Read : " << bytes_read << endl;
		break;
	}

	// ⇒ float ⇒ Normalization (HWC : Height-Width-Channel)
	for (size_t i = 0; i < frame_buffer.size(); ++i) {
		input_tensor_values[i] = static_cast<float>(static_cast<unsigned char>(frame_buffer[i])) / 255.0f;
	}

	// ⇒ CHW                    (CHW : Channel-Height-Width)
	for (int c = 0; c < channels; ++c) {
		for (int h = 0; h < height; ++h) {
			for (int w = 0; w < width; ++w) {
				int src_idx = (h * width + w) * channels + c;
				int dst_idx = c * height * width + h * width + w;
				input_tensor_values[dst_idx] = frame_buffer[src_idx];
			}
		}
	}

	// .T.B.D.
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ipc-list

:: ######################################################################
:: PLEASE DO NOT EDIT THIS FILE
:: ######################################################################
@ECHO OFF
@SETLOCAL ENABLEDELAYEDEXPANSION

:: ----------------------------------------------------------------------

SET MODE=WIN10
FOR /F "tokens=4-5 delims= " %%a IN ('ver') DO (
    SET "version=%%a.%%b"
    FOR /F "tokens=3 delims=." %%x IN ("!version!") DO (
        IF %%x geq 22000 (
            SET MODE=WIN11
        ) ELSE (
            SET MODE=WIN10
        )
    )
)

:: ----------------------------------------------------------------------
@IF "!MODE!" EQU "WIN10" (
    SET CONTENT=[
    FOR /F "tokens=2 delims==" %%a IN ('wmic path Win32_PnPEntity where "Service='usbvideo'" get Name /value ^| grep "Name=" ^| awk "{print $0}" ') DO (
        SET "token=%%a"

        ffprobe -loglevel quiet -f dshow -show_streams -i video="!token!" > !MODE!.txt
        
        SET tokenCodec=
        FOR /F "tokens=2 delims==" %%m IN ('cat !MODE!.txt ^| grep "codec_name"') DO (
            SET "tokenCodec=%%m"
        )
        SET tokenWidth=
        FOR /F "tokens=2 delims==" %%m IN ('cat !MODE!.txt ^| grep "coded_width"') DO (
            SET "tokenWidth=%%m"
        )
        SET tokenHeight=
        FOR /F "tokens=2 delims==" %%m IN ('cat !MODE!.txt ^| grep "coded_height"') DO (
            SET "tokenHeight=%%m"
        )

        SET tokenFPS=
        FOR /F "tokens=2 delims==" %%x IN ('cat !MODE!.txt ^| grep "frame_rate"') DO (
            SET "tokenFPS=%%x"

            FOR /F "tokens=1,2 delims=/" %%a in ("!tokenFPS!") do (
                SET /a tokenFPS=%%a / %%b
            )
        )

        @DEL !MODE!.txt >NUL
        
        @SET CONTENT=!CONTENT!{"token":"!token!","codec":"!tokenCodec!","fps":"!tokenFPS!","width":"!tokenWidth!","height":"!tokenHeight!"},
    )
    @SET CONTENT=!CONTENT!]
    @SET CONTENT=!CONTENT:,]=]!
)
@IF "!MODE!" EQU "WIN11" (
    SET CONTENT=[
    FOR /F tokens^=2^ delims^=^" %%a IN ('ffmpeg -hide_banner -list_devices true -f dshow -i dummy 2^>^&1 ^| findstr /I /C:"video" /C:"DirectShow"') do (
        SET "token=%%a"
        SET LINE=!token!

        ffprobe -loglevel quiet -f dshow -show_streams -i video="!token!" > !MODE!.txt
        
        SET tokenCodec=
        FOR /F "tokens=2 delims==" %%m IN ('cat !MODE!.txt ^| grep "codec_name"') DO (
            SET "tokenCodec=%%m"
        )
        SET tokenWidth=
        FOR /F "tokens=2 delims==" %%m IN ('cat !MODE!.txt ^| grep "coded_width"') DO (
            SET "tokenWidth=%%m"
        )
        SET tokenHeight=
        FOR /F "tokens=2 delims==" %%m IN ('cat !MODE!.txt ^| grep "coded_height"') DO (
            SET "tokenHeight=%%m"
        )

        SET tokenFPS=
        FOR /F "tokens=2 delims==" %%x IN ('cat !MODE!.txt ^| grep "frame_rate"') DO (
            SET "tokenFPS=%%x"

            FOR /F "tokens=1,2 delims=/" %%a in ("!tokenFPS!") do (
                SET /a tokenFPS=%%a / %%b
            )
        )

        @DEL !MODE!.txt >NUL
        
        @SET CONTENT=!CONTENT!{"token":"!token!","codec":"!tokenCodec!","fps":"!tokenFPS!","width":"!tokenWidth!","height":"!tokenHeight!"},
    )
    @SET CONTENT=!CONTENT!]
    @SET CONTENT=!CONTENT:,]=]!
)

ECHO !CONTENT!

@ENDLOCAL
@exit 0;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值