相关疑难解决方法(0)

iOS在线广播流媒体问题

我必须创建提供在线广播流(icecast)的应用程序,最好是.ogg格式.所以我有下一个问题:

  1. 我怎么能播放.ogg格式的音频流?有没有支持的课程?因为我找不到任何,所以我认为它没有用很多位操作是不可能的CFNetwork,CoreAudio, AudioToolbox(我不看cocos2d的,因为这很可笑),我错了?
  2. 我现在正在播放mp3流(对我来说没有.ogg的可能性).我试图用AVPlayer,MPMovieMediaController,AudioSreaming LIB通过MattGallagher和DigitalDJ,以及这些解决方案都不能为我提供了元数据访问.

对于AVPlayer:

   -(void)playButtonPressed:(id)sender
    {
        NSURL *grindURL = [NSURL URLWithString:@"http://radio.goha.ru:8000/grind.fm"];
                    grindFMPlayer = [[AVPlayer alloc] initWithURL:grindURL];
                    [grindFMPlayer.currentItem addObserver:self forKeyPath:@"status" options:0 context:nil]; 
                    AVPlayerItem *item = grindFMPlayer.currentItem;
                    [grindFMPlayer play];
    }

-(void)stopButtonPressed:(id)sender
{
            AVURLAsset *ass = grindFMPlayer.currentItem.asset;
            NSArray *arr = [ass commonMetadata];
            NSArray *it_meta = [grindFMPlayer.currentItem timedMetadata];
            [grindFMPlayer pause];
}
Run Code Online (Sandbox Code Playgroud)

arrit_meta计数总是0,没有歌曲\艺术家\任何元数据.
同样的MPMovieMediaController,从未调用metadataUpdate

streamAudioPlayer = [[MPMoviePlayerController alloc] 
                                                   initWithContentURL:[NSURL URLWithString:@"http://radio.goha.ru:8000/grind.fm"];
                streamAudioPlayer.movieSourceType = …
Run Code Online (Sandbox Code Playgroud)

audio streaming metadata ogg ios

11
推荐指数
1
解决办法
8564
查看次数

是否有可能从HTML5音频元素中获取Icecast元数据?

我正在使用音频元素从icecast服务器流式传输ogg源.音频元素是否提取了冰冷的元数据,是否有办法通过javascript访问它?

基本上,我想显示我正在播放的广播电台的"当前播放"信息.我有什么选择?

谢谢!

javascript audio html5 icecast

10
推荐指数
1
解决办法
2万
查看次数

为icecast服务器开发客户端

我正在为icecast服务器开发客户端(www.icecast.org).任何人都可以告诉我,他们用于流媒体内容的格式是什么?

我正在查看他们的页面,但根本没有关于流格式的信息.

然后我检查了Wireshark跟踪,由于我的理解,我在200 OK响应GET请求时收到的音频数据的格式,它只是一个没有包含任何元数据的普通二进制音频数据,因此与SHOUTcastHTTP相比较直播(HLS)它是相对简单的方法.

是对的吗?有经验吗?

Wireshark跟踪片段:

GET /bonton-128.mp3 HTTP/1.1
Host: icecast3.play.cz
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Connection: keep-alive


HTTP/1.0 200 OK
Content-Type: audio/mpeg
icy-br:128
ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2
icy-br:128
icy-description:Radio Bonton
icy-genre:Pop / Rock
icy-name:Radio Bonton
icy-pub:0
icy-url:http://www.radiobonton.cz
Server: Icecast 2.3.2
Cache-Control: no-cache

Here are then aac or MPEG data
Run Code Online (Sandbox Code Playgroud)

感谢致敬,

斯登

streaming mp3 aac icecast

9
推荐指数
1
解决办法
2万
查看次数

如何在不单独请求元数据和流式传输的情况下将元数据和轨道与shoutcast流分离

我制作了一个非常好用的收音机应用程序.我也可以播放广播流并获取元数据.流媒体服务来自shoutcast.

唯一的问题是,我将url作为数据源添加到媒体播放器,然后每隔5秒获取标题和艺术家.

有什么办法,我可以制作一个http请求然后拆分音频和元数据,然后将其发送到媒体播放器?

获取元数据的代码.

private void retreiveMetadata() throws IOException {

    int metaDataOffset = 0;

    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder()
        .addHeader("Icy-MetaData", "1")
        .addHeader("Connection", "close")
        .addHeader("Accept", "")
        .url(streamUrl)
        .build();

    request.headers("");


    Response response = client.newCall(request).execute();
    InputStream stream = response.body().byteStream();

    //Map<String, List<String>> headers = response..getHeaderFields();

    if (!response.headers("icy-metaint").equals("")) {
        // Headers are sent via HTTP

        String icyMetaInt = response.headers("icy-metaint").toString();
        icyMetaInt = icyMetaInt.replace("[", "");
        icyMetaInt = icyMetaInt.replace("]", "");

        metaDataOffset = Integer.parseInt(icyMetaInt);
    } else {

        // Headers are sent within a stream …
Run Code Online (Sandbox Code Playgroud)

java android shoutcast internet-radio

9
推荐指数
1
解决办法
499
查看次数

用于从Shoutcast/Icecast流中提取艺术家和标题的PHP脚本

我找到了一个可以从Icecast或Shoutcast流中提取艺术家和标题名称的脚本.我希望脚本在歌曲改变时自动更新,此时它只在我执行它时工作.我是PHP的新手,所以任何帮助将不胜感激.谢谢!

define('CRLF', "\r\n");

class streaminfo{
public $valid = false;
public $useragent = 'Winamp 2.81';

protected $headers = array();
protected $metadata = array();

public function __construct($location){
    $errno = $errstr = '';
    $t = parse_url($location);
    $sock = fsockopen($t['host'], $t['port'], $errno, $errstr, 5);
    $path = isset($t['path'])?$t['path']:'/';
    if ($sock){
        $request = 'GET '.$path.' HTTP/1.0' . CRLF . 
            'Host: ' . $t['host'] . CRLF . 
            'Connection: Close' . CRLF . 
            'User-Agent: ' . $this->useragent . CRLF . 
            'Accept: */*' . CRLF . 
            'icy-metadata: 1'.CRLF.
            'icy-prebuffer: …
Run Code Online (Sandbox Code Playgroud)

php shoutcast audio-streaming icecast

7
推荐指数
1
解决办法
9181
查看次数

如何提取嵌入在 Samsung 智能电视上 Icecast 音频(无线电)流中的流式“正在播放”数据

我正在为广播电台创建一个三星电视应用程序,他们在 Icecast 流中提供“正在播放”信息。是否可以(以及如何)提取此信息?

internet-radio icecast samsung-smart-tv

5
推荐指数
1
解决办法
1万
查看次数

如何从Windows Phone的shoutcast无线电频道获取元数据?

我喜欢开发一个Windowsphone 8/7互联网广播应用程序,它从shoutcast无线电频道流式传输音频文件.为此我需要从流式传输中提取元数据.现在我想知道如何从流中提取元数据.

c# shoutcast online-radio windows-phone-7 windows-phone-8

5
推荐指数
1
解决办法
1091
查看次数

使用mp3spi1.9.5获取ShoutCast/IceStream元数据

我使用JLayer到流在线广播音乐,所以这种简单的代码是在这里:(凡StreamPlayer是一个特殊的实施JLayer)

// Radio Station URL示例是http://radio.flex.ru:8000/radionami

/**
 * Plays the Given Online Stream
 * 
 * @param url
 *      <b> The Specified url you want to connect </b>
 * @throws IOException
 * @throws JavaLayerException
 */
public void playRadioStream(URL spec) {

    try {
        // Connection
        URLConnection urlConnection = spec.openConnection();

        // Connecting
        urlConnection.connect();

        // Try to play it
        StreamPlayer player = new StreamPlayer();

        player.open((urlConnection.getInputStream()));
        player.play();
    } catch (StreamPlayerException | IOException e) {
        e.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)

问题:

我无法弄清楚如何从这个连接中检索信息,就像现在从这个广播电台播放的歌曲或者电视台的名字等...真的很感谢帮助!! …

java connection

5
推荐指数
0
解决办法
95
查看次数

在Android上接收ShoutCast流的信息

我正在制作一个应用程序来使用我的在线广播网站,我正在使用Android 2.2(API 8)进行编码,并且我使用了两个按钮来使用Shoutcast Stream.

这是我主类的代码:

 public class GrooveOfMusicRadioActivity extends Activity {
      /** Called when the activity is first created. */


     MediaPlayer mediaPlayer;
     Button start, stop;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        start = (Button) findViewById(R.id.button1);
        stop = (Button) findViewById(R.id.button2);




        start.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                mediaPlayer.start();

            }
        });
        stop.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                mediaPlayer.pause();
            }
        });





        String url = "http://67.212.165.106:8161"; // your URL …
Run Code Online (Sandbox Code Playgroud)

android metadata shoutcast

4
推荐指数
1
解决办法
4398
查看次数

ffmpeg 的 ICY 元数据支持

有没有办法使用 FFMpeg 从shoutcast 流中获取ICY 元数据?一种方法是自己处理连接/流并将自定义 IOStream 发送到 ffmpeg。

还有其他简单的方法吗?或可用的解复用器?

谢谢

android metadata ffmpeg shoutcast

3
推荐指数
1
解决办法
4380
查看次数

icy-metaint 的值类型

研究这个问题时,我在标准中找不到该变量的第一手描述。我实际上根本找不到ICY标准的正确描述。

似乎有些程序员认为这个值必须是有符号整数(例如这里)。然而另一个例子说这个值可以是 32768,这超出了有符号整数定义。

据我所知,“有符号整数”在不同情况下可能意味着 2 字节大小或 4 字节大小。那么该值的位大小是多少(如果有符号,则包括符号)?我需要知道它,因为我编写 Verilog 代码并且不想将逻辑花费在不需要的位上。

PS“metaint”应该是元信息区间的意思,int这个词一定不是整数类型的意思!

shoutcast audio-streaming internet-radio

3
推荐指数
1
解决办法
1948
查看次数