直播推流接口对接完成

master
laiiihz 5 years ago
parent 3ed76003ff
commit 69cf6a4949

@ -19,6 +19,7 @@ import 'package:recook/utils/CommonLocalizationsDelegate.dart';
import 'package:recook/utils/test.dart';
import 'package:redux/redux.dart';
import 'package:tencent_im_plugin/tencent_im_plugin.dart';
import 'package:tencent_live_fluttify/tencent_live_fluttify.dart';
import 'constants/header.dart';
import 'utils/app_router.dart';
@ -38,6 +39,13 @@ void main() async {
//im
TencentImPlugin.init(appid: '1400423961');
//
TencentLive.instance.init(
licenseUrl:
'http://license.vod2.myqcloud.com/license/v1/9bc083b7b7c2101699499d193c40921b/TXLiveSDK.licence',
licenseKey: 'cf903ae78afbb05b5128f8961bf08f64',
);
AppConfig.initial(useEncrypt: false
///

@ -1,5 +1,10 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/widgets/bottom_sheet/action_sheet.dart';
import 'package:tencent_live_fluttify/tencent_live_fluttify.dart';
import 'package:image_picker/image_picker.dart';
class LivePage extends StatefulWidget {
LivePage({Key key}) : super(key: key);
@ -10,6 +15,7 @@ class LivePage extends StatefulWidget {
class _LivePageState extends State<LivePage> {
LivePusher _livePusher;
File _imageFile;
@override
void initState() {
@ -18,6 +24,7 @@ class _LivePageState extends State<LivePage> {
@override
void dispose() {
_livePusher?.stopPush();
_livePusher?.stopPreview();
super.dispose();
}
@ -34,6 +41,91 @@ class _LivePageState extends State<LivePage> {
_livePusher.startPreview(controller);
},
),
Positioned(
right: rSize(85),
left: rSize(85),
bottom: rSize(30),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
MaterialButton(
height: rSize(68),
minWidth: rSize(68),
elevation: 0,
padding: EdgeInsets.zero,
child: _imageFile == null
? Icon(Icons.camera_alt)
: Image.file(
_imageFile,
height: rSize(68),
width: rSize(68),
fit: BoxFit.cover,
),
color: Colors.black.withOpacity(0.25),
onPressed: () {
ActionSheet.show(
context,
items: ['相机', '相册'],
listener: (index) {
Future<PickedFile> getImage() {
if (index == 0)
return ImagePicker()
.getImage(source: ImageSource.camera);
if (index == 1)
return ImagePicker()
.getImage(source: ImageSource.gallery);
return null;
}
getImage().then((pickedFile) {
if (pickedFile != null)
_imageFile = File(pickedFile.path);
setState(() {});
});
},
);
},
),
rWBox(15),
Column(
children: [
Text(''),
MaterialButton(
color: Colors.transparent,
child: Text('选择话题'),
onPressed: () {},
elevation: 0,
),
],
),
],
),
rHBox(28),
FlatButton(
height: rSize(40),
onPressed: () {
_livePusher.startPush(
'rtmp://livepush.reecook.cn/live/recook_1?txSecret=9eab277c32fd7a1d8e1d7867dda0740b&txTime=5F83F127');
},
child: Text(
'开始直播',
style: TextStyle(
color: Colors.white,
fontSize: rSP(18),
),
),
color: Color(0xFFDB2D2D),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(rSize(20)),
),
),
],
),
),
Positioned(
right: 0,
top: 0,

@ -1,10 +1,6 @@
import 'package:flutter/material.dart';
import 'package:many_like/many_like.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/live/models/tencent_im_user_model.dart';
import 'package:recook/pages/live/tencent_im/tencent_im_tool.dart';
import 'package:recook/pages/live/widget/live_user_bar.dart';
import 'package:recook/pages/live/widget/more_people.dart';
@ -67,7 +63,7 @@ class _LiveStreamViewPageState extends State<LiveStreamViewPage> {
_livePlayer = await LivePlayer.create();
await _livePlayer.setPlayerView(controller);
_livePlayer
.startPlay('rtmp://58.200.131.2:1935/livetv/cctv1');
.startPlay('rtmp://play.reecook.cn/live/recook_1');
},
),
),

@ -105,7 +105,7 @@ class _LiveStreamPageState extends State<LiveStreamPage>
setState(() {
_liveAttentionListModels.addAll(models);
});
_liveAttentionController.refreshCompleted();
_liveAttentionController.loadComplete();
});
},
body: ListView.separated(

Loading…
Cancel
Save