ag游戏庄闲|官方网站
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
?用户名
?密??码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sy1368364703
今日帖子: 12
在线用户: 20
导航: 论坛 -> 发布控件 斑竹:liumazi,ruralboy ?
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲△△ -
注册会员
2019/8/22 23:15:39
标题:
QuickBurroV5.21发布,开始支持流媒体点播! 浏览:360
加入我的收藏
楼主: QuickBurro?V5.21发布!?本次主要更新:
==========
1、几个客户反馈问题的修正
2、Web服务部分增加JWT支持
3、Web部分增加目录权限规则控制
4、消息传输开始支持受众的通配符匹配
5、核心服务增加流媒体点播服务
6、核心服务增加短视频HLS切片与打包
7、增加流媒体采集发布管理工具
8、客户端SDK及API单元增加服务端切片控制系列方法
9、增加AutoCAD图形文件访问相关插件
10、增加AutoCAD图形文件访问的客户端控件
11、Qua框架增加与上述相关的20余个函数
----------
欢迎下载试用!欢迎订购本产品!
https://www.quickburro.org/
----------------------------------------------
樵夫的大马甲
作者:
男 fausten (fausten) ★☆☆☆☆ -
盒子活跃会员
2019/8/23 6:51:42
1楼: 牛!!!
----------------------------------------------
-
作者:
男 delphixe8 (delphixe8) ▲▲△△△ -
注册会员
2019/8/23 10:24:16
2楼: 高大上啊,牛!!!
----------------------------------------------
-
作者:
男 l_wming (L_Wming) ▲▲▲▲▲ -
注册会员
2019/8/24 9:17:39
3楼: 666?可以做delphi版抖音了
----------------------------------------------
-
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲△△ -
注册会员
2019/8/24 17:06:42
4楼: 确实可以!
前端可以选用“Android+IOS?FFMPEG?视频转换Delphi组件”等实现视频数据的格式转换、配音、配字幕等,再转为quickburro支持的qmf文件发布,就可以供点播了。没什么难度了。
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲△△ -
注册会员
2019/8/24 17:21:00
5楼: 提供专门的后台采集、转码、发布、管理工具
.
此帖子包含附件:
PNG 图像
大小:451.0K
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲△△ -
注册会员
2019/8/24 17:23:26
6楼: 手机端,delphi开发前端应用也很容易,比如,我写了个简单的demo
.
此帖子包含附件:
JPEG 图像
大小:220.7K
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲△△ -
注册会员
2019/8/24 17:23:53
7楼: //
//?视频录制回调...
function?TForm14.OnActivityResult(RequestCode,?ResultCode:?Integer;?Data:?JIntent):?Boolean;
var
??FS:?TFileStream;
begin
??Result?:=?False;
??TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification,?FMessageSubscriptionID);
??FMessageSubscriptionID?:=?0;
??if?RequestCode?=?RECORD_VIDEO?then
?????begin
???????if?ResultCode?=?TJActivity.JavaClass.RESULT_OK?then
??????????begin
??????????TThread.Queue(nil,?procedure
??????????begin
??????????if?(TFile.Exists(VFileName))?then
??????????begin
??????????try
??????????FS?:=?TFileStream.Create(VFileName,?fmShareDenyNone);
??????????memo1.Lines.Add('视频录制成功(myvideo.mp4)!请播放测试!');
??????????finally
??????????fs.Free;
??????????end;
??????????end;
??????????Invalidate;
??????????end);
??????????end;
?????end;
end;

//
//?订阅的消息...
procedure?TForm14.HandleActivityMessage(const?Sender:?TObject;?const?M:?TMessage);
begin
??if?M?is?TMessageResultNotification?then
?????begin
???????OnActivityResult(TMessageResultNotification(M).RequestCode,?TMessageResultNotification(M).ResultCode,
??????????TMessageResultNotification(M).Value);
?????end;
end;

//
//?连接服务器...
procedure?TForm14.SpeedButton1Click(Sender:?TObject);
begin
???if?MBConn.Connect?then
??????begin
?????????memo1.Lines.Add('连接服务器成功!');
?????????Receiver.Active:=true;
?????????memo1.Lines.Add('消息接收器开启!');
?????????RemoteFileName:='uploads\myvideo.mp4';
?????????QMFFileName:='homepage\video\myvideo.qmf';
?????????localplaying:=false;
?????????remoteplaying:=false;
??????end
???else
??????memo1.Lines.Add('***?连接服务器失败,Error='+MBConn.LastError);
end;

//
//?录制视频...
procedure?TForm14.Button1Click(Sender:?TObject);
var
??VideoIntent:?JIntent;
??videoUri:?Jnet_Uri;
??AFile:?JFile;
begin
??FMessageSubscriptionID?:=?TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification,?HandleActivityMessage);
??VideoIntent?:=?TJIntent.JavaClass.init(TJMediaStore.JavaClass.ACTION_VIDEO_CAPTURE);
??if?(VideoIntent.resolveActivity(TAndroidHelper.Context.getPackageManager())?<>?nil)?then
?????begin
???????VFileName?:=?TPath.Combine(TPath.GetSharedDocumentsPath,?'myvideo.mp4');
???????AFile?:=?TJFile.JavaClass.init(StringToJString(VFileName));
???????videoUri?:=?TJnet_Uri.JavaClass.fromFile(AFile);
???????VideoIntent.putExtra(TJMediaStore.JavaClass.EXTRA_OUTPUT,?TJParcelable.Wrap((videoUri?as?ILocalObject).GetObjectID));
???????TAndroidHelper.Activity.startActivityForResult(VideoIntent,?RECORD_VIDEO);
?????end;
end;

//
//?本地MP4播放...
procedure?TForm14.Button6Click(Sender:?TObject);
begin
???if?localplaying?then
??????begin
?????????browser.Visible:=false;
?????????memopanel.Visible:=true;
?????????Button6.Text:='MP4视频播放';
?????????localplaying:=false;
??????end
???else
??????begin
?????????memopanel.Visible:=false;
?????????browser.Visible:=true;
?????????browser.Navigate('file ://'+vfilename);
?????????Button6.Text:='结束播放';
?????????localplaying:=true;
??????end;
end;

//
//?上传MP4到服务端...
procedure?TForm14.Button7Click(Sender:?TObject);
var
???FirstBlockId,i:?integer;
???ok:?boolean;
begin
???browser.Visible:=false;
???memopanel.Visible:=true;
???progresspanel.Visible:=true;
???FirstBlockId:=0;
???for?i?:=?1?to?5?do
??????begin
?????????ok:=ftp.UploadFile(VFileName,RemoteFileName,FirstBlockId);
?????????if?ok?then
??????????break;
?????????FirstBlockId:=ftp.LastOkBlockId+1;
?????????memo1.Lines.Add('***?上传MP4文件到服务端失败,开始重试...');
?????????application.ProcessMessages;
??????end;
???if?ok?then
??????begin
?????????memo1.Lines.Add('上传MP4文件到服务端成功,请继续切片处理!');
?????????progresspanel.Visible:=false;
??????end
???else
??????memo1.Lines.Add('***?尝试多次上传MP4文件到服务端仍失败,无法继续测试.');
end;

//
//?上传进度...
procedure?TForm14.FTPFileTransferProgress(MaxBlocks,?OkBlocks:?Integer);
begin
???progressbar.Max:=MaxBlocks;
???progressbar.Value:=OkBlocks;
end;

//
//?开始HLS切片及打包...
procedure?TForm14.Button2Click(Sender:?TObject);
var
???Params:?TConvertParameters;
begin
???browser.Visible:=false;
???memopanel.Visible:=true;
//
//?转换参数...
???Params.Height:=round(memo1.Height);
???Params.Width:=round(memo1.Width);
???Params.PieceSeconds:=6;
???Params.FrameRate:=25;
???Params.VideoBitrate:=1000;
???Params.AudioBitrate:=80;
???Params.CodeLength:=4;
//
//?开始调用...
???if?Files.MediaConvertToQMF(RemoteFileName,qmffilename,Params)?then
??????memo1.Lines.Add('提交服务端切片打包任务成功,请等待处理结果...')
???else
??????memo1.Lines.Add('***?提交服务端切片打包任务失败!Error='+Files.LastError);
end;

//
//?HLS切片及打包回调(收到消息时)...
procedure?TForm14.ReceiverMessageArrives(Sender:?TObject;?NewMsgCount:?Integer);
var
???MsgParcel:?TMBParcel;
begin
???browser.Visible:=false;
???memopanel.Visible:=true;
???Receiver.PopMessage(MsgParcel);
???if?MsgParcel.GetStringGoods('MsgType')<>'AsyncExecuteResult'?then
??????exit;
???if?MsgParcel.GetBooleanGoods('ProcessResult')?then
??????memo1.Lines.Add('切片打包任务成功完成!')
???else
??????memo1.Lines.Add('***?切片打包任务执行失败!');
end;

//
//?取QMF文件属性...
procedure?TForm14.Button3Click(Sender:?TObject);
var
???Prop:?TQMFProperty;
begin
???browser.Visible:=false;
???memopanel.Visible:=true;
???if?Files.GetRemoteQMFProperty(qmffilename,prop)?then
??????begin
?????????memo1.Lines.Add('获取服务端QMF文件属性成功!');
?????????memo1.Lines.Add('切片数据块数:'+inttostr(prop.BlockCount));
?????????memo1.Lines.Add('画面宽度:'+inttostr(prop.Width));
?????????memo1.Lines.Add('画面高度:'+inttostr(prop.Height));
?????????memo1.Lines.Add('切片时长(秒):'+inttostr(prop.PieceSeconds));
?????????memo1.Lines.Add('帧率(帧/秒):'+inttostr(prop.FrameRate));
?????????memo1.Lines.Add('视频比特率:'+inttostr(prop.VideoBitrate)+'k');
?????????memo1.Lines.Add('音频比特率:'+inttostr(prop.AudioBitrate)+'k');
?????????memo1.Lines.Add('切片文件名长度:'+inttostr(prop.NameLength));
?????????memo1.Lines.Add('切片编码长度:'+inttostr(prop.CodeLength));
??????end
???else
??????memo1.Lines.Add('***?获取服务端QMF文件属性失败!');
end;

//
//?远程播放测试QMF...
procedure?TForm14.Button4Click(Sender:?TObject);
var
???Url:?string;
begin
???if?remoteplaying?then
??????begin
?????????browser.Visible:=false;
?????????memopanel.Visible:=true;
?????????Button4.Text:='远程播放QMF';
?????????remoteplaying:=false;
??????end
???else
??????begin
?????????url:='http://&#39;+MBConn.Host;
?????????if?MBConn.Port<>80?then
??????????url:=url+':'+inttostr(MBConn.Port);
?????????url:=url+'/video/myvideo/index.m3u8';
?????????memopanel.Visible:=false;
?????????browser.Visible:=true;
?????????browser.Navigate(url);
?????????remoteplaying:=true;
?????????Button4.Text:='结束播放';
??????end;
end;

//
//?退出...
procedure?TForm14.Button5Click(Sender:?TObject);
begin
???mbconn.Disconnect;
???close;
end;
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲△△ -
注册会员
2019/8/28 20:17:06
8楼: 功能强大的Delphi中间件,新版支持HLS流媒体点播,欢迎测试:
(2M带宽的云服务器,人多时播放有卡顿,见谅)

我们的星球:
http://www.quickburro.org/videodemo.html

黑衣人4:
http://www.quickburro.org/videodemox.html

速度与激.情5:
http://www.quickburro.org/videodemox3.html

----------
相信Delphi,开发效率高、低投入高产出、无所不能!
----------------------------------------------
樵夫的大马甲
信息
登陆以后才能回复
Copyright ? 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行27.34375毫秒 RSS