gpt4 book ai didi

ffmpeg avformat_open_input() 无法打开包含中文字符的 dshow 设备 url

转载 作者:行者123 更新时间:2023-12-04 10:07:54 31 4
gpt4 key购买 nike

USB网络摄像头还可以,但我要使用的设备是一个名为“无他伴侣(竖屏)”的“虚拟摄像头”,其视频来自Android或iOS等智能手机。将手机连接到 PC,在手机上运行一个应用程序,然后运行一个 PC 客户端应用程序,它可以预览视频。手机端叫“无他相机”,PC端叫“无他伴侣”,网址是https://www.wuta-cam.com/ .

我在 Windows 命令行中使用命令 ffmpeg -list_devices true -f dshow -i dummy 运行 FFmpeg ,列出设备就可以了。(为了正确显示中文,请提前运行chcp 65001。)

运行命令ffplay -f dshow -i video="无他伴侣(竖屏)" ,播放视频就可以了。(当然需要提前确认其PC客户端预览正常。)

现在我想在我的程序中从那个虚拟相机获取解码帧,我调用 avformat_open_input()video=无他伴侣(竖屏) ,失败,返回值为-5,I/O错误。

有人知道原因吗?请帮忙。提前致谢。

下面是我的代码片段。

avdevice_register_all();
avcodec_register_all();
//const char * url= "video=Logitech Webcam C930e";// This is fine.
char url[] = "video=无他伴侣(竖屏)";// This is bad.

AVFormatContext *pFmtCtx = avformat_alloc_context();
AVInputFormat *iformat = av_find_input_format("dshow");
int nRet = 0;
nRet = avformat_open_input(&pFmtCtx, url, iformat, NULL);
if (nRet)
{
const size_t buffer_size = 256;
char err_description[buffer_size];
av_strerror(nRet, err_description, buffer_size);
printf("%s.\n", err_description);// --> I/O error.
printf("FAILED to open input.(Line:%d,%d)\n", __LINE__, nRet);
return -1;
}

最佳答案

FFmpeg 可能无法直接处理汉字。如果设备名称中包含中文字符,FFmpeg 会报找不到给定名称的设备。我试过Windows API函数WideCharToMultiByte() , 有用。

关于ffmpeg avformat_open_input() 无法打开包含中文字符的 dshow 设备 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61476316/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com