当前位置: 首页 > 面试题库 >

使用PHP从音频流中提取轨道信息

孙帅
2023-03-14
问题内容

是否可以使用PHP从音频流中提取轨道信息?我已经进行了一些挖掘,可以找到的最接近的函数是stream_get_transports,但是我的主机不支持通过fsockopen()进行http传输,因此,我将不得不做更多的工作来看看该函数还会返回什么。

目前,我正在尝试从AOL流中提取艺术家并跟踪元数据。


问题答案:

这是一个SHOUTcast流,是的,它是可能的。它与ID3标签完全无关。我不久前写了一个脚本来做到这一点,但现在找不到了。就在上周,我帮助另一个拥有相当完整的脚本的人做同样的事情,但是我不能只是将源发布到它,因为它不是我的。但是,如果您发送电子邮件至brad@musatcha.com,我将与您保持联系。

无论如何,这是您自己的操作方法:

您需要做的第一件事是直接连接到服务器。不要使用HTTP。好吧,您可能会使用cURL,但是它可能比它的价值更麻烦。您使用fsockopen()doc连接到它。确保使用正确的端口。还要注意,许多Web主机将阻止很多端口,但是通常可以使用端口80。幸运的是,所有AOL托管的SHOUTcast流都使用端口80。

现在,就像您的客户一样提出您的请求

GET /whatever HTTP/1.0

但是,在发送之前<CrLf><CrLf>,请包含下一个标头!

Icy-MetaData:1

这告诉服务器您需要元数据。现在,发送一对<CrLf>

好的,服务器将用一堆头响应,然后开始向您发送数据。在这些标题中,将为icy-metaint:8192或相似。那8192是 meta区间
。这很重要,实际上是您唯一需要的价值。通常为8192,但并非总是如此,因此请确保实际读取此值!

基本上,这意味着您将获得8192字节的MP3数据,然后是一块meta,然后是8192字节的MP3数据,然后是一块meta。

读取8192字节的数据(确保在此计数中不包括标题),将其丢弃,然后读取下一个字节。该字节是元数据的第一个字节,并指示元数据有多长时间。取该字节的值(带ord()(doc的实际字节),然后乘以16。结果是要读取的元数据字节数。将这些字节数读入字符串变量中以供使用。

接下来,修剪此变量的值。为什么?因为该字符串0x0的末尾被填充(以使其均匀地适合16字节的倍数),并且trim()doc为我们处理了该问题。

您将看到类似以下的内容:

StreamTitle="Awesome Trance Mix - DI.fm";StreamUrl=''

我将让您选择解析方法的选择方法。就我个人而言,我可能只拆分了2个;,但要提防包含的标题;。我不确定转义字符方法是什么。进行一些实验可以为您提供帮助。

使用完服务器后,请不要忘记断开与服务器的连接!



 类似资料:
  • 我正在使用AVPlayer播放HLS流。当用户按下录制按钮时,我还需要录制这些流。我使用的方法是分别录制音频和视频,然后在最后合并这些文件以制作最终视频。远程mp4文件是成功的。 但是现在对于HLS(.m3u8)文件,我可以使用AVAssetWriter录制视频,但音频录制有问题。 我正在使用MTAudioProccessingTap处理原始音频数据并将其写入文件。我遵循了这篇文章。我能够录制远程

  • 我正在尝试从视频文件中提取音频。我试过python中的moviepy、ffmpeg等库。提取的音频文件太大。对于大小为75 MB的音频文件,音频文件与moviepy的距离约为1.1 GB。即使比特率为16 kbps,采样率为16000 Hz,提取的文件大小也将达到200 MB。任何其他库或提取的音频文件大小至少相同或小于完整视频文件的方式。 我正在ffmpeg中使用上述命令。

  • 我试图将alpha通道从灰度级的ProRes(mov)中提取到一个单独的mp4文件中(以便稍后在html页面上模拟带有Transperance的视频)。 但我没有得到一个填充的阿尔法通道,而只是它的一种边界。非常确定原始文件是ok的(尝试使用不同的文件),并将其编码为webm显示了正确的变通性。

  • 视频怎么实现切换音轨,实现这种效果,用了videojs一直报错

  • 所以一般的问题是如何从开放流中播放视频?例如Chrome、Firefox和KMPlayer都很容易做到这一点。浏览器生成一个带有视频标签的简单页面,因此通过JS来管理播放器将是微不足道的。但是...内部WebBrowser控件不能,它建议下载文件。我尝试了CEFSharp(Chrome嵌入式框架),但没有成功。也许有人知道好的视频播放器WPF库,可以流视频吗?我也尝试了vlc.wpf和Shockw

  • 本文向大家介绍php利用ffmpeg提取视频中音频与视频画面的方法详解,包括了php利用ffmpeg提取视频中音频与视频画面的方法详解的使用技巧和注意事项,需要的朋友参考一下 前言 FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换