cv :: VideoCapture读取实时视频流,但不能区分假网址

问题描述

我试图按如下方式使用OpenCV读取实时视频流,

cv::VideoCapture capture(video_url);

它可以从实时视频流中读取并且效果很好。但是,当发送虚假的video_url时,例如txt文件的url,

video_url = "http://127.0.0.10:8090/result.txt"

它也可以解码来自该伪造URL的数据。但是我希望它在video_url为假时返回错误信息。

如何区分URL是真实的视频流还是txt网络文件

解决方法

python


您可以使用URLValidator()来区分假网址。

from django.core.exceptions import ValidationError
from django.core.validators import URLValidator

validate = URLValidator()
is_valid = False

url = "https://www.youtube.com/watch?v=vNSxargsAWk"

try:
    validate(url)
    is_valid = True
except ValidationError as exception:
    print("url is not valid")

c ++


  • 使用正则表达式检查URL。
#include <regex>
using namespace std;

int main()
{
    regex url_validator("/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/");
    
    if(regex_match(input,url_validator))
        cout<<"Input is an integer"<<endl;
    else
        cout<<"Invalid input : Not an integer"<<endl;
}