Flutter flatter:如何在没有mp3扩展的情况下传输由httpurl提供的实时音频

Flutter flatter:如何在没有mp3扩展的情况下传输由httpurl提供的实时音频,flutter,Flutter,如何流式传输由http url提供的实时音频,而不使用Flatter的mp3扩展? 它不是远程文件, 但是像webradio这样的流式url可以使用包 github 代码片段 AudioStream stream = new AudioStream("https://your_url_goes_here.com"); stream.start(); stream.pause(); stream.resume(); stream.stop(); 完整示例代码 import 'package:fl

如何流式传输由http url提供的实时音频,而不使用Flatter的mp3扩展? 它不是远程文件, 但是像webradio这样的流式url可以使用包
github

代码片段

AudioStream stream = new AudioStream("https://your_url_goes_here.com");
stream.start();
stream.pause();
stream.resume();
stream.stop();
完整示例代码

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:url_audio_stream/url_audio_stream.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

  @override
  void initState() {
    super.initState();
  }


  static AudioStream stream = new AudioStream("your url");
  Future<void> callAudio(String action) async{
    if(action == "start"){
      stream.start();
    }else if(action == "stop"){
      stream.stop();
    }else if(action == "pause"){
      stream.pause();
    }else{
      stream.resume();
    }
  }


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            children: <Widget>[
              new RaisedButton(
                child: new Text("Start"),
                onPressed: (){
                  callAudio("start");
                },
              ),
              new RaisedButton(
                child: new Text("Stop"),
                onPressed: (){
                  callAudio("stop");
                },
              ),
              new RaisedButton(
                child: new Text("Pause"),
                onPressed: (){
                  callAudio("pause");
                },
              ),
              new RaisedButton(
                child: new Text("Resume"),
                onPressed: (){
                  callAudio("resume");
                },
              )
            ],
          )
        ),
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“dart:async”;
导入“包:flifter/services.dart”;
导入“包:url_audio_stream/url_audio_stream.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
字符串_platformVersion='未知';
@凌驾
void initState(){
super.initState();
}
静态音频流=新音频流(“您的url”);
未来调用音频(字符串操作)异步{
如果(操作==“开始”){
stream.start();
}否则如果(操作==“停止”){
stream.stop();
}否则如果(操作==“暂停”){
stream.pause();
}否则{
stream.resume();
}
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:const Text(“插件示例应用程序”),
),
正文:中(
子:列(
儿童:[
新升起的按钮(
子项:新文本(“开始”),
已按下:(){
呼叫音频(“启动”);
},
),
新升起的按钮(
子项:新文本(“停止”),
已按下:(){
呼叫音频(“停止”);
},
),
新升起的按钮(
子项:新文本(“暂停”),
已按下:(){
呼叫音频(“暂停”);
},
),
新升起的按钮(
儿童:新文本(“简历”),
已按下:(){
callAudio(“简历”);
},
)
],
)
),
),
);
}
}

它正在工作,但对于某些url,我需要在AndroidManifest.xml中进行一些更改以使其工作


android:usesCleartextTraffic=“true”

检查WebRadio URL的工作示例。


请注意,此解决方案的软件包已停止使用。