Ver código fonte

Add a develop page to example.

Caijinglong 6 anos atrás
pai
commit
9c4e6e782f

+ 2 - 1
example/ios/Flutter/flutter_export_environment.sh

@@ -2,7 +2,8 @@
 # This is a generated file; do not edit or check into version control.
 export "FLUTTER_ROOT=/Volumes/Evo512/sdk/flutter/flutter_beta"
 export "FLUTTER_APPLICATION_PATH=/Users/cai/Documents/GitHub/flutter_ijkplayer/example"
-export "FLUTTER_TARGET=lib/main.dart"
+export "FLUTTER_TARGET=/Users/cai/Documents/GitHub/flutter_ijkplayer/example/lib/main.dart"
 export "FLUTTER_BUILD_DIR=build"
 export "SYMROOT=${SOURCE_ROOT}/../build/ios"
 export "FLUTTER_FRAMEWORK_DIR=/Volumes/Evo512/sdk/flutter/flutter_beta/bin/cache/artifacts/engine/ios"
+export "TRACK_WIDGET_CREATION=true"

+ 3 - 0
example/lib/const/video_datasource.dart

@@ -4,6 +4,9 @@ class VideoDataSource {
   static final springBootMenuM3u8 = DataSource.network(
       "https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8");
 
+  static final ai = DataSource.network(
+      "http://img.ksbbs.com/asset/Mon_1703/05cacb4e02f9d9e.mp4");
+
   static final reportErrorM3u8FromAliyun = DataSource.network(
       "https://outin-4839d24d670f11e988c600163e1a3b4a.oss-cn-shanghai.aliyuncs.com/2b9f4f2d1c4d4985a11352cb1970fead/86c3f36ed4e1cd5539ed347282725b3e-fd-encrypt-stream.m3u8?Expires=1563162783&OSSAccessKeyId=LTAIrkwb21KyGjJl&Signature=y4m98BAzJUQVzFwHszQS%2BFGtq5A%3D");
 }

+ 58 - 0
example/lib/page/developing/crash_on_set_src_page.dart

@@ -0,0 +1,58 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
+
+class CrashOnSetSrcPage extends StatefulWidget {
+  @override
+  _CrashOnSetSrcPageState createState() => _CrashOnSetSrcPageState();
+}
+
+class _CrashOnSetSrcPageState extends State<CrashOnSetSrcPage> {
+  IjkMediaController controller;
+
+  List<String> networkList = [
+    "http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8",
+    "http://img.ksbbs.com/asset/Mon_1703/05cacb4e02f9d9e.mp4",
+    "https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8",
+  ];
+
+  int currentIndex = 0;
+
+  @override
+  void initState() {
+    super.initState();
+    controller = IjkMediaController();
+  }
+
+  @override
+  void dispose() {
+    controller.dispose();
+    super.dispose();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: AppBar(
+        title: Text("切换数据崩溃"),
+      ),
+      body: ListView(
+        children: <Widget>[
+          AspectRatio(
+            aspectRatio: 1,
+            child: IjkPlayer(
+              mediaController: controller,
+            ),
+          ),
+        ],
+      ),
+      floatingActionButton: FloatingActionButton(
+        onPressed: () {
+          final url = networkList[currentIndex];
+          controller.setDataSource(DataSource.network(url), autoPlay: true);
+          currentIndex++;
+          currentIndex %= networkList.length;
+        },
+      ),
+    );
+  }
+}

+ 2 - 0
example/lib/page/developing/develop_index.dart

@@ -1,5 +1,6 @@
 import 'package:flutter/material.dart';
 
+import 'crash_on_set_src_page.dart';
 import 'develop_prepare_page.dart';
 import 'live_interruption_page.dart';
 import 'new_full_screen_page.dart';
@@ -20,6 +21,7 @@ class DevelopingIndexPageState extends State<DevelopingIndexPage> {
       body: ListView(
         children: <Widget>[
           buildButton("developing preare page", ForPreparePage()),
+          buildButton("切换视频源crash", CrashOnSetSrcPage()),
           buildButton("直播中断", LiveInterruptionPage()),
           buildButton("视频源错误", SreErrorPage()),
           buildButton("新的全屏", NewFullScreenPage()),

+ 2 - 1
example/lib/page/screen_shot_page.dart

@@ -25,7 +25,8 @@ class _ScreenShotPageState extends State<ScreenShotPage> {
         TargetPlatform.iOS,
       ],
       [
-        IjkOption(IjkOptionCategory.player, "mediacodec", 0),
+        // IjkOption(IjkOptionCategory.player, "mediacodec", 1),
+        // IjkOption(IjkOptionCategory.player, "videotoolbox", 1),
       ],
     );
     mediaController.setDataSource(