求助!!带中文的url网络视频如何播放!!崩溃!!

qq_35382927 2016-07-22 11:24:59
RT,用的是QT5的Qmediaplayer,做一个网络视频播放器,请求一个http接口后返回了一串JSON字符串,解析出里面的url,是全英文的url就能正常播放!但是一带了中文的url就不行。。。。。错误是“DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x800c0006 ()”,解析出来的url是MP4格式的,试过了本地带中文的MP4格式,网络上不带中文的MP4格式都能正常播放!!就是播放不了网络上带中文的url!试过各种中文转码,utf8,gbk,gb2312,toPercentEncoding,方法都试过!,url全转或者只转中文然后拼接在一起再去播放都不行!!崩溃了,每次转码后的结果我都一行行打印在debug上看,全都试过了。。。仍然是不!能!播!放!求好心的大神~几天了都没解决啊。。。
...全文
1493 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈哈王戈多 2017-09-25
  • 打赏
  • 举报
回复
问题描述:在使用 MediaPlayer 时,一直报 DirectShowPlayerService::doRender: Unresolved error code 0x80040266 () ,上网查询得知,因为 Qt 中的多媒体播放,底层是使用DirectShowPlayerService,所以安装一个DirectShow解码器,例如LAV Filters,于是安装,DSFP-5.1.zip:解压:DirectShow FilterPack\LAV Filters\install_all.bat,成功。后来又出现 DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80040216 () ,是因为flv文件的路径有问题。
冷静忍耐 2016-07-27
  • 打赏
  • 举报
回复
引用 12 楼 qq_35382927 的回复:
[quote=引用 11 楼 u013466477 的回复:] [quote=引用 10 楼 qq_35382927 的回复:] [quote=引用 9 楼 u013466477 的回复:] [quote=引用 7 楼 qq_35382927 的回复:] [quote=引用 6 楼 u013466477 的回复:] 网络上带中文的url是你服务器的,还是本来就是网上的视频??? 如果本来就是网上的,那你只需要解码。 因为那个网址被别人编码了。你要做的是解码。
这种算网上还是服务器的?。。。。http://192.168......mp4这种格式,如果是网上的,那我是不是只需要将url的QString类型转成QByteArray后,只将QByteArray类型的url去fromPercentEncoding一下就好了?我试了下还是不行。。。。大神再帮我想想办法[/quote] http://192.168......mp4??ip地址都有,这个是你们自己测试的吧。 可能还带有编码问题,fromPercentEncoding解码UTF8 如果网址编码为GBK,可以百度一下 192.168......mp4这些东西是谁放上去的??去找那个服务器端的 [/quote]这个应该是我们公司上测试用的。。。。我是通过get请求得到一串JSON,然后解析JSON中的url,解析出来是string类的url,通过toutf8之后转成bytearray类的url,然后再fromPercentEncoding解码?这样试过了。。。也不行。。。我让公司测试人员把url中的中文改成拼音后就能播放。。。换成中文的就不行。。。。[/quote] 服务器生成的json是不是进行了什么处理。所以你获取下来不对?? 你可以试试把各种可能打印出来(最好能在界面上显示出来),看是不是可以显示成中文,也有可能不需要解码。(或者服务器端没有进行编码) [/quote]QT5显示中文是没什么事的呀。。。。都能显示。。。问题是带中文的url一旦去addmedia后就播放不了。。。。全英文的就可以!!所以我试过各种类型的url转码。。。每转一次都打印下来看看什么样子的。。。能不能播放。。。刚JSON解析出来是String类的url,这个是一定的,如果是全英文的就能直接addmedia进行播放,是中文的就要把中文部分转码。。。。然后就试过网上各种转码。。。。然并卵啊。。。。。。。。。。。。。。。。。。。。。。都困扰我一周了这个问题[/quote] 具体我也不清楚了,这个我觉得还是得问服务器端的,这个应该还是编码问题,去问那个生成json数组的
qq_35382927 2016-07-27
  • 打赏
  • 举报
回复
引用 11 楼 u013466477 的回复:
[quote=引用 10 楼 qq_35382927 的回复:] [quote=引用 9 楼 u013466477 的回复:] [quote=引用 7 楼 qq_35382927 的回复:] [quote=引用 6 楼 u013466477 的回复:] 网络上带中文的url是你服务器的,还是本来就是网上的视频??? 如果本来就是网上的,那你只需要解码。 因为那个网址被别人编码了。你要做的是解码。
这种算网上还是服务器的?。。。。http://192.168......mp4这种格式,如果是网上的,那我是不是只需要将url的QString类型转成QByteArray后,只将QByteArray类型的url去fromPercentEncoding一下就好了?我试了下还是不行。。。。大神再帮我想想办法[/quote] http://192.168......mp4??ip地址都有,这个是你们自己测试的吧。 可能还带有编码问题,fromPercentEncoding解码UTF8 如果网址编码为GBK,可以百度一下 192.168......mp4这些东西是谁放上去的??去找那个服务器端的 [/quote]这个应该是我们公司上测试用的。。。。我是通过get请求得到一串JSON,然后解析JSON中的url,解析出来是string类的url,通过toutf8之后转成bytearray类的url,然后再fromPercentEncoding解码?这样试过了。。。也不行。。。我让公司测试人员把url中的中文改成拼音后就能播放。。。换成中文的就不行。。。。[/quote] 服务器生成的json是不是进行了什么处理。所以你获取下来不对?? 你可以试试把各种可能打印出来(最好能在界面上显示出来),看是不是可以显示成中文,也有可能不需要解码。(或者服务器端没有进行编码) [/quote]QT5显示中文是没什么事的呀。。。。都能显示。。。问题是带中文的url一旦去addmedia后就播放不了。。。。全英文的就可以!!所以我试过各种类型的url转码。。。每转一次都打印下来看看什么样子的。。。能不能播放。。。刚JSON解析出来是String类的url,这个是一定的,如果是全英文的就能直接addmedia进行播放,是中文的就要把中文部分转码。。。。然后就试过网上各种转码。。。。然并卵啊。。。。。。。。。。。。。。。。。。。。。。都困扰我一周了这个问题
qq_35382927 2016-07-25
  • 打赏
  • 举报
回复
引用 9 楼 u013466477 的回复:
[quote=引用 7 楼 qq_35382927 的回复:] [quote=引用 6 楼 u013466477 的回复:] 网络上带中文的url是你服务器的,还是本来就是网上的视频??? 如果本来就是网上的,那你只需要解码。 因为那个网址被别人编码了。你要做的是解码。
这种算网上还是服务器的?。。。。http://192.168......mp4这种格式,如果是网上的,那我是不是只需要将url的QString类型转成QByteArray后,只将QByteArray类型的url去fromPercentEncoding一下就好了?我试了下还是不行。。。。大神再帮我想想办法[/quote] http://192.168......mp4??ip地址都有,这个是你们自己测试的吧。 可能还带有编码问题,fromPercentEncoding解码UTF8 如果网址编码为GBK,可以百度一下 192.168......mp4这些东西是谁放上去的??去找那个服务器端的 [/quote]这个应该是我们公司上测试用的。。。。我是通过get请求得到一串JSON,然后解析JSON中的url,解析出来是string类的url,通过toutf8之后转成bytearray类的url,然后再fromPercentEncoding解码?这样试过了。。。也不行。。。我让公司测试人员把url中的中文改成拼音后就能播放。。。换成中文的就不行。。。。
冷静忍耐 2016-07-25
  • 打赏
  • 举报
回复
引用 7 楼 qq_35382927 的回复:
[quote=引用 6 楼 u013466477 的回复:] 网络上带中文的url是你服务器的,还是本来就是网上的视频??? 如果本来就是网上的,那你只需要解码。 因为那个网址被别人编码了。你要做的是解码。
这种算网上还是服务器的?。。。。http://192.168......mp4这种格式,如果是网上的,那我是不是只需要将url的QString类型转成QByteArray后,只将QByteArray类型的url去fromPercentEncoding一下就好了?我试了下还是不行。。。。大神再帮我想想办法[/quote] http://192.168......mp4??ip地址都有,这个是你们自己测试的吧。 可能还带有编码问题,fromPercentEncoding解码UTF8 如果网址编码为GBK,可以百度一下 192.168......mp4这些东西是谁放上去的??去找那个服务器端的
冷静忍耐 2016-07-25
  • 打赏
  • 举报
回复
引用 10 楼 qq_35382927 的回复:
[quote=引用 9 楼 u013466477 的回复:] [quote=引用 7 楼 qq_35382927 的回复:] [quote=引用 6 楼 u013466477 的回复:] 网络上带中文的url是你服务器的,还是本来就是网上的视频??? 如果本来就是网上的,那你只需要解码。 因为那个网址被别人编码了。你要做的是解码。
这种算网上还是服务器的?。。。。http://192.168......mp4这种格式,如果是网上的,那我是不是只需要将url的QString类型转成QByteArray后,只将QByteArray类型的url去fromPercentEncoding一下就好了?我试了下还是不行。。。。大神再帮我想想办法[/quote] http://192.168......mp4??ip地址都有,这个是你们自己测试的吧。 可能还带有编码问题,fromPercentEncoding解码UTF8 如果网址编码为GBK,可以百度一下 192.168......mp4这些东西是谁放上去的??去找那个服务器端的 [/quote]这个应该是我们公司上测试用的。。。。我是通过get请求得到一串JSON,然后解析JSON中的url,解析出来是string类的url,通过toutf8之后转成bytearray类的url,然后再fromPercentEncoding解码?这样试过了。。。也不行。。。我让公司测试人员把url中的中文改成拼音后就能播放。。。换成中文的就不行。。。。[/quote] 服务器生成的json是不是进行了什么处理。所以你获取下来不对?? 你可以试试把各种可能打印出来(最好能在界面上显示出来),看是不是可以显示成中文,也有可能不需要解码。(或者服务器端没有进行编码)
qq_35382927 2016-07-24
  • 打赏
  • 举报
回复
qq_35382927 2016-07-23
  • 打赏
  • 举报
回复
引用 6 楼 u013466477 的回复:
网络上带中文的url是你服务器的,还是本来就是网上的视频??? 如果本来就是网上的,那你只需要解码。 因为那个网址被别人编码了。你要做的是解码。
这种算网上还是服务器的?。。。。http://192.168......mp4这种格式,如果是网上的,那我是不是只需要将url的QString类型转成QByteArray后,只将QByteArray类型的url去fromPercentEncoding一下就好了?我试了下还是不行。。。。大神再帮我想想办法
冷静忍耐 2016-07-22
  • 打赏
  • 举报
回复
网络上带中文的url是你服务器的,还是本来就是网上的视频??? 如果本来就是网上的,那你只需要解码。 因为那个网址被别人编码了。你要做的是解码。
qq_35382927 2016-07-22
  • 打赏
  • 举报
回复
引用 4 楼 u013466477 的回复:
[quote=引用 3 楼 qq_35382927 的回复:] [quote=引用 2 楼 u013466477 的回复:] 估计用网页js把网址给编码了,估计需要解码吧 编码:encodeURIComponent(uri); 解码:decodeURIComponent(uri);
你好!请问能具体点吗??初入门IT,很多不是太懂。。我现在是能通过toPercentEncoding将url中的中文转成%形式,然后将转完的url直接setMedia(QUrl(url)),然后就不行了。。。。请问按你这样说的是在setMedia前将转好的url再解码吗??[/quote] 网址是经过编码了,对应的就是Qt的toPercentEncoding,所以你得到网址需要先解码 对应Qt方法解码:QByteArray::fromPercentEncoding(uri);[/quote]我按你说的在toPercentEncoding后又进行了解码:QString url1=QByteArray::fromPercentEncoding(uri); 然后将这个url1setMedia(QUrl(url1))后还是不行,打印出url1后看到的是中文部分变成了??β??这样的形式。。。。。哪里出错了。。。。
冷静忍耐 2016-07-22
  • 打赏
  • 举报
回复
引用 3 楼 qq_35382927 的回复:
[quote=引用 2 楼 u013466477 的回复:] 估计用网页js把网址给编码了,估计需要解码吧 编码:encodeURIComponent(uri); 解码:decodeURIComponent(uri);
你好!请问能具体点吗??初入门IT,很多不是太懂。。我现在是能通过toPercentEncoding将url中的中文转成%形式,然后将转完的url直接setMedia(QUrl(url)),然后就不行了。。。。请问按你这样说的是在setMedia前将转好的url再解码吗??[/quote] 网址是经过编码了,对应的就是Qt的toPercentEncoding,所以你得到网址需要先解码 对应Qt方法解码:QByteArray::fromPercentEncoding(uri);
qq_35382927 2016-07-22
  • 打赏
  • 举报
回复
引用 2 楼 u013466477 的回复:
估计用网页js把网址给编码了,估计需要解码吧 编码:encodeURIComponent(uri); 解码:decodeURIComponent(uri);
你好!请问能具体点吗??初入门IT,很多不是太懂。。我现在是能通过toPercentEncoding将url中的中文转成%形式,然后将转完的url直接setMedia(QUrl(url)),然后就不行了。。。。请问按你这样说的是在setMedia前将转好的url再解码吗??
冷静忍耐 2016-07-22
  • 打赏
  • 举报
回复
估计用网页js把网址给编码了,估计需要解码吧 编码:encodeURIComponent(uri); 解码:decodeURIComponent(uri);
qq_35382927 2016-07-22
  • 打赏
  • 举报
回复

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧