Delphi的ShellExecute如何播放服务器上的视频

juno_393 2016-11-15 02:06:29
procedure TfmDirChild.ImgClick(Sender: TObject);
GetFile:=HTTPEncode(HeadUrl+'/'+s);
GetFile:=StringReplace(GetFile, '%2F', '/', [rfReplaceAll]);
GetFile:=StringReplace(GetFile, '%3A', ':', [rfReplaceAll]);
ShellExecute(Handle,'Open',PChar('wmplayer.exe'),PChar('"'+getfile+'"'),nil,SW_SHOWNORMAL);

播放服务器上的视频,GetFile是Php页面返回回来的视频路径。
然后用ShellExecute打开,如果指定windows media player 播放器播放。视频会打不开。除非不指定播放器,在网页上播放能播放出来。
有什么办法能在window media player 上播放么?
...全文
687 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2016-11-19
  • 打赏
  • 举报
回复
如果不下载,至少发下载缓存,或内存缓存。
juno_393 2016-11-18
  • 打赏
  • 举报
回复
顶一下!
jjpweb 2016-11-18
  • 打赏
  • 举报
回复
我在iis上测试,mine类型加入.mp4就可以用类似你的代码播放,删了就不行 .mp4 video/mpeg
  • 打赏
  • 举报
回复
测试: ShellExecute(0, nil, 'wmplayer.exe', 'http://www.3dyunhuan.com/teacherdata/%BF%CE%BC%FE%CE%C4%BC%FE/%B3%F5%D6%D0/%CE%EF%C0%ED/%B0%CB%C4%EA%BC%B6/%C9%CF%B2%E1/1-%B5%DA%D2%BB%D5%C2-%B5%DA1%BD%DA/5-%CA%D3%C6%B5/2D%CA%D3%C6%B5/%B0%AE%BC%F4%BC%AD-%CE%D2%B5%C4%CA%D3%C6%B5.mp4', 0, SW_SHOWNORMAL); 是可以的。
lyhoo163 2016-11-17
  • 打赏
  • 举报
回复
要下载到本地,再播放本地文件。
jjpweb 2016-11-17
  • 打赏
  • 举报
回复
直接在windows media player 打开看是否能直接打开,不通过你的软件。
juno_393 2016-11-17
  • 打赏
  • 举报
回复
引用 3 楼 suiyunonghen 的回复:
网页上用的是相对路径,你用ShellExecute那个直接打开Media播放,路径只怕不对,你试试直接用Media播放器打开你所谓的路径看看,如果可以,那么ShellExecute就可以
我用ShellExecute调用Windows Media Player 可以打开局域网上的视频啊,但是一放到服务器上就不行了!然后我判断了,如果读不到路径会报路径不存在,但是并没有提示。运行的话只是打开了Windows Media Player ,然后就没动静了!
juno_393 2016-11-17
  • 打赏
  • 举报
回复
想请问一下各位,如果不能用ShellExecute,那有什么方法能解决这个问题么?
juno_393 2016-11-17
  • 打赏
  • 举报
回复
嗯,编码问题。转换编码能在浏览器打开但是不能在windows media player 中打开
  • 打赏
  • 举报
回复
在浏览器中打开这个http://www.3dyunhuan.com/teacherdata/课件文件/初中/物理/八年级/上册/1-第一章-第1节/5-视频/2D视频/爱剪辑-我的视频.mp4都不行,firefox、IE11、edge都是404错误。
  • 打赏
  • 举报
回复
那只能说明wmplayer就不认那种编码的命令行,你就不要多此一举了。
juno_393 2016-11-17
  • 打赏
  • 举报
回复
用httpencode编码后就不会啊
  • 打赏
  • 举报
回复
打开个马,404错误。
juno_393 2016-11-17
  • 打赏
  • 举报
回复
引用 16 楼 juno_393 的回复:
[quote=引用 15 楼 DelphiGuy 的回复:]
你给出的文件根本不存在,当然不行了。

是存在的啊,你试着不用windows media player 打开,直接在网页上打开是能打开的。[/quote]
ShellExecute(Handle,'Open',PChar('"'+GetFile+'"'),nil,nil,SW_SHOWNORMAL);
juno_393 2016-11-17
  • 打赏
  • 举报
回复
引用 15 楼 DelphiGuy 的回复:
你给出的文件根本不存在,当然不行了。
是存在的啊,你试着不用windows media player 打开,直接在网页上打开是能打开的。
  • 打赏
  • 举报
回复
你给出的文件根本不存在,当然不行了。
juno_393 2016-11-17
  • 打赏
  • 举报
回复
引用 13 楼 DelphiGuy 的回复:
测试:
ShellExecute(0, nil, 'wmplayer.exe', 'xxx', 0, SW_SHOWNORMAL);
是可以的。
procedure TForm1.btn1Click(Sender: TObject);
var
GetFile:string;
begin
GetFile:= HTTPEncode('http://www.3dyunhuan.com/teacherdata/课件文件/初中/物理/八年级/上册/1-第一章-第1节/5-视频/2D视频/爱剪辑-我的视频.mp4');
GetFile:=StringReplace(GetFile, '%2F', '/', [rfReplaceAll]);
GetFile:=StringReplace(GetFile, '%3A', ':', [rfReplaceAll]);
ShellExecute(0, nil, 'wmplayer.exe', PChar('"'+GetFile+'"'), 0, SW_SHOWNORMAL);
end;

我测试不行啊。
  • 打赏
  • 举报
回复
测试: ShellExecute(0, nil, 'wmplayer.exe', 'xxx', 0, SW_SHOWNORMAL); 是可以的。
juno_393 2016-11-17
  • 打赏
  • 举报
回复
引用 11 楼 jjpweb 的回复:
看你的描述,感觉不是代码的问题,是网站权限问题。
服务器上的视频的权限是没有问题的,设置成了允许所有操作!
jjpweb 2016-11-17
  • 打赏
  • 举报
回复
看你的描述,感觉不是代码的问题,是网站权限问题。
加载更多回复(6)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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