问题描述
我试图按如下方式使用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;
}