天道酬勤,学无止境

从文件夹中获取所有音频文件(Get all audio files from a folder)

问题

如何使用 managedQuery() 从 android 中的特定文件夹中获取所有音频文件。 意味着应该是 managedQuery() 中的 where 子句来过滤 Cursor 结果。

代码是:

String[] proj = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DURATION };
Cursor cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, /*where clause here*/, null, null);
回答1

IS_MUSIC != 0 AND DATA LIKE '/dir/%':

String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0 AND " +
            MediaStore.Audio.Media.DATA + " LIKE '/mnt/sdcard/Music/SomeArtist/%'";

这会将您的 managedQuery 结果限制在 .../SomeArtist/ 目录中。

回答2

我希望您在上面的代码中检查文件的扩展名以检查它是否是媒体文件

public class ReadAllFilesFromPathActivity extends Activity {
private List<String> myList;
File file;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listView = (ListView) findViewById(R.id.mylist);
myList = new ArrayList<String>();

File directory = Environment.getExternalStorageDirectory();
file = new File( directory + "/Test" );
File list[] = file.listFiles();

for( int i=0; i< list.length; i++)
{
    if(checkFileExtension( list[i].getName() )
    {
         myList.add( list[i].getName() );
    }
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, android.R.id.text1, myList);
listView.setAdapter(adapter); //Set all the file in the list.
}
}

并添加以下方法来检查扩展。 在枚举中添加扩展

private boolean checkExtension( String fileName ) {
    String ext = getFileExtension(fileName);
    if ( ext == null) return false;
    try {
        if ( SupportedFileFormat.valueOf(ext.toUpperCase()) != null ) {
            return true;
        }
    } catch(IllegalArgumentException e) {
        return false;    
    }
    return false; 
}

public String getFileExtension( String fileName ) {
    int i = fileName.lastIndexOf('.');
    if (i > 0) {
        return fileName.substring(i+1);
    } else 
        return null;
}

和支持的扩展的枚举(你也可以添加你自己的)

public enum SupportedFileFormat
{
    _3GP("3gp"),
    MP4("mp4"),
    M4A("m4a"),
    AAC("aac"),
    TS("ts"),
    FLAC("flac"),
    MP3("mp3"),
    MID("mid"),
    XMF("xmf"),
    MXMF("mxmf"),
    RTTTL("rtttl"),
    RTX("rtx"),
    OTA("ota"),
    IMY("imy"),
    OGG("ogg"),
    MKV("mkv"),
    WAV("wav");

    private String filesuffix;

    SupportedFileFormat( String filesuffix ) {
        this.filesuffix = filesuffix;
    }

    public String getFilesuffix() {
        return filesuffix;
    }
}

这是更多的代码,但可以帮助你

回答3

这是我的代码,它适用于我的特定目录路径

我做了一个光标,并在它的帮助下找到我目录中的所有歌曲。

DOWNLOAD_FILE_DIR 有我的目录路径

public static final  String DOWNLOAD_FILE_DIR = Environment.getExternalStorageDirectory().getPath() + "/MYDIR";

这是查找该目录歌曲的查询。

String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0 AND " +
        MediaStore.Audio.Media.DATA + " LIKE '"+DOWNLOAD_FILE_DIR+"/%'"

这将返回一个游标。

context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                null, selection, null, null);
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 使用 Flask 将音频从 pyaudio 流式传输到 HTML5(Stream audio from pyaudio with Flask to HTML5)
    问题 我想通过 Flask 将我的麦克风的音频(通过 pyaudio 录制)流式传输到任何连接的客户端。 这是音频的来源: def getSound(self): # Current chunk of audio data data = self.stream.read(self.CHUNK) self.frames.append(data) wave = self.save(list(self.frames)) return data 这是我的烧瓶代码: @app.route('/audiofeed') def audiofeed(): def gen(microphone): while True: sound = microphone.getSound() #with open('tmp.wav', 'rb') as myfile: # yield myfile.read() yield sound return Response(stream_with_context(gen(Microphone()))) 这是客户端: <audio controls> <source src="{{ url_for('audiofeed') }}" type="audio/x-wav;codec=pcm"> Your browser does not support the audio
  • 如何从sd卡android获取所有的所有音频文件(how to get all all audio files from sd card android)
    问题 我想写一个从整个SD卡中获取所有mp3文件的类。 但实际上,它只能将音频文件直接放置在sd卡上。 所以它不会搜索通过子文件夹。我想使用Mediastore,但我没有将它存储到arraylist中。 也许您可以帮我,非常感谢,也很抱歉成为菜鸟;)Vinzenz import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.HashMap; import de.me.musicplayer.SongsManager.FileExtensionFilter; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; public class SongsManager { final String MEDIA_PATH = new String("/sdcard/"); private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); // Constructor public SongsManager(
  • 如何从存储在 C# 项目资源文件夹中的音频文件中提取文件路径(How to extract file path from an audio file stored in project resource folder in C#)
    问题 我在提取存储在我的项目资源文件夹中的音频文件的文件目录时遇到问题。 在我的项目中,我有一个 mysounds.resx 文件,我在其中添加了一个文件 (abc.mp3)。 WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer(); wplayer.URL = "E:/xyz.mp3"; wplayer.settings.setMode("loop",false); wplayer.controls.play(); 在这里,当我在 wplayer.URL 中给出“E:/xyz.mp3”目录时,它播放得很好。 但我想要做的是从我存储 abc.mp3 的 mysounds.resx 文件中获取文件路径,我想使用来自 mysounds.resx 文件的文件路径,而不是任何绝对路径。 有没有人可以帮助我? 我在 C# 方面不是很好。 我真的需要解决这个问题。 先感谢您。 回答1 将 Resource 中的音频文件写入临时文件,然后使用 WMPLib 播放。 //Set up the temp path, I'm using a GUID for the file name to avoid any conflicts var temporaryFilePath = String.Format("{0}{1}
  • 从视频流下载TS文件(Download TS files from video stream)
    问题 大多数站点上的视频都使用渐进式下载,这意味着视频已下载到我的计算机上,并且易于跟踪。 有很多扩展可以做到这一点,即使在开发工具中,也很容易做到。 在某些网站上流式传输视频。 这意味着我们不仅下载1个文件,还下载许多小软件包。 在开发工具中,可以跟踪这些软件包。 我感兴趣的网站是:http://www.rtlxl.nl/#!/goede-tijden-slechte-tijden-10821/c8e2bff7-5a5c-45cb-be2b-4b3b3e866ffb。 -程序包的扩展名为.TS。 -可以通过复制请求的URL来保存包 -我无法播放这些文件。 我一定做错了什么,否则我就错过了什么。 我想知道我在做什么错。 我想创建一个供个人使用的chrome扩展程序,该扩展程序捕获所有程序包的url。 当我拥有所有网址时,我想将其传递给php脚本,该脚本将下载它们并使用ffmpeg将其粘贴到mp4文件中。 请帮我拿包。 回答1 @aalhanane和@Micheal Espinola Jr的补充 由于m3u8x仅适用于Windows。 确定了m3u8网址后,您还可以使用Jdownloader2或VLC Media Player下载并连接流。 Jdownloader2:打开Jdownloader时,只需复制m3u8网址即可。 它将在Linkgrabber选项卡中识别流。 VLC 3:
  • 使用PyAudio播放.mp3文件(Playing .mp3 files with PyAudio)
    问题 pyaudio可以播放.mp3文件吗? 如果是,请问我写一个例子。 如果不是,将.mp3转换为.wav的最简单方法是什么? 我尝试使用PyDub,可以获取我的.wav文件,但是当我尝试使用PyAudio播放该文件时,出现以下错误: File "C:\Python33\lib\wave.py", line 130, in initfp raise Error('file does not start with RIFF id') wave.Error: file does not start with RIFF id 与其他.wav样本(未从mp3转换的样本)一起使用时效果很好。 我正在使用gTTS库将文本转换为我的应用程序的语音。 它会创建简短的.mp3文件,然后我需要播放。 现在我正在使用 os.system("start english.mp3") 我想找到一种更好的方法来做到这一点。 首先,我不想受到平台的限制。 其次,我不喜欢文件开始播放时弹出播放器,我希望它停留在背景上。 我尝试为此找到一种极简主义的解决方案,因为我只需要简单玩耍就可以了。 UPD:我设法与pyglet一起玩。 似乎还不错,只是需要很长时间...我听到声音之前大约有10秒钟的延迟。 而且它不适用于线程处理(我想在程序仍在运行时播放.mp3)。 有没有办法让播放器停留在背景上而不在所有其他窗口上弹出?
  • 如何从互联网下载音频/视频文件并存储在iPhone应用程序中?(How to download audio/video files from internet and store in iPhone app?)
    问题 我正在开发用于音乐的iPhone应用程序。 我想给用户一些选择,以便他们可以通过流媒体收听歌曲/音乐,或者可以在应用程序中下载音乐。 我知道如何以编程方式在应用程序中流式传输音频文件。 但是,我不知道如何在应用程序中下载音频文件并在下载后播放音频。 用户也可以在下载时暂停下载。 有可能吗? 谁能指导我,并为我分享任何示例代码或教程吗? 我还有一个疑问:您能帮我在应用程序内创建一个文件夹吗? 请帮我。 提前致谢。 回答1 建立资料夹 对于每个应用程序,您都有一个“ Documents Folder 。 您在应用中使用的所有文件都存储在此处。 如果要在此处创建更多目录,则可以执行以下操作: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyNewFolder"]; if (![[NSFileManager
  • 下载一个音频文件到文件管理器需要从本地路径播放(Downloaded an Audio file into File Manager need to play it from local path)
    问题 我正在使用音频播放器应用程序,而且我有一个离线下载选项,当用户单击下载按钮时,它应该开始下载并将其保存到本地。 我已经使用文件管理器 URLSession 保存了它。 我试过采取和分离目标网址。 我正在使用自动点唱机第三方播放歌曲。 示例文件位置是 file:///var/mobile/Containers/Data/Application/BBB9AF1C-D87C-4C40-9F29-AD89062A20E2/Documents/05-KARMA-YOGA.mp3 if let audioUrl = URL(string: audioTobedownloaded) { // then lets create your document folder url let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! // lets create your destination file url let destinationUrl = documentsDirectoryURL.appendingPathComponent(audioUrl.lastPathComponent) print(destinationUrl)
  • 如何在本机/默认媒体播放器上的raw / assets文件夹中播放音频文件?(How to play audio file from raw/assets folder on the native/default media player?)
    问题 我知道我可以像这样在媒体播放器中播放mp3文件: Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); File file = new File(YOUR_SONG_URI); intent.setDataAndType(Uri.fromFile(file), "audio/*"); startActivity(intent); 通过此链接,我尝试获取如下所示的URI: Uri audio = Uri.parse("android.resource://com.audio.test/"+R.raw.audio1); Log.d(TAG,"uri:"+audio.toString()); 和 Uri audio = Uri.parse("android.resource://com.audio.test/raw/audio"); Log.d(TAG,"uri:"+audio.toString()); 输出预期结果: 01-24 15:28:23.190: D/MyClass(30234): uri:android.resource://com.audio.test/2131034112 01-24 15:29:13.: D/MyClass(30234): uri
  • UILocalNotification:播放保存在文档目录中的自定义音频文件(UILocalNotification: Playing a Custom Audio File saved in Documents Directory)
    问题 目前我正在创建一个警报应用程序,它可以播放来自服务器的自定义音频剪辑。 我实现这一点的计划是将所有音频剪辑保存在本地,然后相应地设置 soundName。 但我有几个问题。 目前我在将音频文件保存在捆绑目录中时遇到了麻烦,只能将文件保存在文档目录中。 是否可以从文档目录而不是包目录中设置 soundName ? 或者我可以将音频文件从服务器保存到包目录吗? var localNotification = UILocalNotification() localNotification.fireDate = self.timePicker.date localNotification.alertBody = "Alert Fired" localNotification.soundName = "fakesound.caf" // File saved in Document Directory UIApplication.sharedApplication().scheduleLocalNotification(localNotification) 谢谢,如果您对我的问题有任何困惑,请告诉我。 或者,如果您能想到关于我如何解决此问题的另一种解决方案。 回答1 不幸的是,答案是否定的。 您只能在本地通知中播放包中的声音,并且包是只读的。
  • Android MediaStore 获取不同的音乐文件文件夹(Android MediaStore get distinct folders of music files)
    问题 寻找仅从 Android MediaStore 获取音乐文件的文件夹路径以获取输入目录路径的方法。 所以实际上的问题是关于如何对 MediaStore 进行适当的查询。 这是一个例子。 我目前的代码: String dirPath="/mnt/sdcard/Music/"; String selection =MediaStore.Audio.Media.DATA +" like ?"; String[] projection = {MediaStore.Audio.Media.DATA}; String[] selectionArgs={dirPath+"%"}; Cursor cursor = this.managedQuery( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null); List<String> songs = new ArrayList<String>(); while(cursor.moveToNext()) songs.add(cursor.getString(0)); 因此,我们将在songs列表中得到如下内容: /mnt/sdcard/Music/song1.mp3 /mnt/sdcard/Music/song2.mp3
  • 使用 .m3u8 解密和组合 .ts 音频文件(Decrypting And Combining .ts Audio Files with .m3u8)
    问题 我有几千个 .ts AES-128 加密音频文件,带有 .key 和 .m3u8 文件。 密钥文件只包含一个由 44 个字符组成的密钥。 .m3ud 文件似乎是某种类型的播放列表。 #EXTM3U #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-KEY:METHOD=AES-128,URI="http://localhost:[port]/hls/keys/nax_9781843794066.key" #EXTINF:10, http://localhost:[port]/filesequence0000000.ts #EXTINF:10, etc... 请注意,密钥 URI 和 .ts 文件的路径现在都是错误的。 环顾四周,看来 ffmpeg 可能适用于这种格式。 但我不确定语法。 如何解密和合并这些文件? 我一直在尝试修复播放列表语法并弄清楚如何使用 ffmpeg 并得到了。 ffmpeg -i nax_9781843794066.m3u8 -c copy output.ts ffmpeg version N-77197-gdf2ce13 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 5.2
  • 从数组中的音频字节获取音高或幅度等信息(Get information like pitch or amplitude from audio byte in an array)
    问题 我想在字节数组中获取音频字节的音调(Hz)。 这是我现在的代码: byte[] wav = File.ReadAllBytes("test.wav"); for (int i = 44; i<wav.Length; i++) { // wav[i] is an audio byte, channel shifts every 2 bytes (I think) } 起初我认为 wav 文件是用成百上千个块构建的,每个块都包含一个采样率,所以我试图扫描整个数组以寻找另一个字节序列,它代表单词“WAVE”,它是一个块,但采样率只是在数组的开头,在第 44 位之后,所有的数组都只是音频数据本身。 音频字节只是一个十六进制值,我无法理解如何从该值中获取任何信息。 更新:我已经下载了具有 FFT 算法的 Math.NET 库。 这是 FFT 的文档:https://numerics.mathdotnet.com/api/MathNet.Numerics.IntegralTransforms/Fourier.htm 我已经阅读了那里的所有方法,但我不知道哪种方法会做我想要的(给它几个字节的 wav 文件并获取它们的频率)。 更新 2:现在我使用 Accord 库进行 FFT,我在 youtube 上找到了一个教程。 这是我将音频字节转换为双数组的代码: for (int i = 44
  • 如何将特定文件夹中的所有(mp3)文件导入 react.js 中的数组?(How can I import all (mp3) files from a particular folder into an array in react.js?)
    问题 我正在用 react.js 和 HTML5 网络音频 API 构建一个 mp3 播放器。 我刚开始反应(大约 2 周),但有 3 年的 JavaScript 经验。 似乎为了让 mp3 文件播放/加载到音频标签中(在使用 cmd 行和 localhost 的反应环境中),我需要将它们导入应用程序(而不仅仅是在音频标签)。 在这里看到我的问题 所以目前我正在以硬编码方式导入声音,如下所示: import React, { Component } from 'react'; import './music-player.css'; import mp3_file0 from './sounds/0010_beat_egyptian.mp3'; import mp3_file1 from './sounds/0011_beat_euphoric.mp3'; import mp3_file2 from './sounds/0014_beat_latin.mp3'; import mp3_file3 from './sounds/0015_beat_pop.mp3'; import mp3_file4 from './sounds/0027_falling_cute.mp3'; import mp3_file5 from './sounds/0028_feather.mp3'
  • 以编程方式为应用程序设置自定义通知铃声(从移动音频文件中选择)(Programatically Set Custom Notification Ringtone (Choose from AUDIO files in Mobile) for App)
    问题 我想列出移动设备中所有可用的 AUDIO (.mp3) 文件。 用户可以从列表中选择任何音频文件,并可以设置为此应用程序的通知音。 我找到了很多来源,但没有一个是令人满意的。 谢谢你。 回答1 首先获取所有可用的 mp3 文件并使用下面的代码检索它们的名称对检索到的数据做任何您想做的事情,例如您可以设置为列表视图或在对话框中显示它们等。 String extPath = getSecondaryStorage(); if (extPath != null) { mySongs_onSystem = findSongs(new File(extPath)); } else mySongs_onSystem = findSongs(Environment.getExternalStorageDirectory()); public ArrayList<File> findSongs(File root) { ArrayList<File> al = new ArrayList<>(); File[] files = root.listFiles(); for (File singleFile : files) { if (singleFile.isDirectory()) { al.addAll(findSongs(singleFile)); } else { if
  • 从音频文件中获取字节流?(Get byte stream from an audio file?)
    问题 有没有办法从 Java 中的音频文件(特别是 wav 文件)中获取音频流? 我正在尝试获取特定时间间隔的流,即从startTime到endTime ,其中startTime不为零。 例如,要获取 20 秒长的音频文件的 5 秒到 10 秒(5 秒持续时间)的音频流。 怎么做? 回答1 您可以使用标准的 Java 声音库来做到这一点:javax.sound.sampled。 阅读 .wav 文件在这里已经很好地涵盖了,以及如何将字节转换为相应的帧。 如果您检查右侧的“相关”,您将找到有关如何读取音频数据、一次一个缓冲区的价值以及如何遍历这些缓冲区并将字节转换为 PCM 数据的信息。 假设您知道帧速率(例如,44100 fps),那么它就变成了对音频数据的字节或帧进行计数的问题。 在立体声中,以 44100 fps 的 16 位编码为例,每帧由 4 个字节组成,因此字节 (5 * 4 * 44100) 将是 5 秒点的开始,而 (10 * 4 * 44100) 将是10 秒的位置。 Java 声音教程很难阅读。 以下链接在标题“读取声音文件”下有一个非常有用的代码示例。 http://docs.oracle.com/javase/tutorial/sound/converters.html 有一条注释行写着“// 在这里,对现在位于 audioBytes
  • 如何从 .mov 视频文件头(QuickTime 文件格式)读取比特率信息?(How to read the bit rate information from a .mov video file header (QuickTime File Format)?)
    问题 我一直在尝试从 .mov 文件(QuickTime 文件格式)的元数据中读取一些值,但收效甚微。 我一直在使用以下链接作为参考: QuickTime 文件格式规范简介 我已经设法正确定位和读出/计算媒体持续时间,但我似乎无法找到比特率信息存储在哪个 Atom 中。(Atom 是文件中元数据的内部块)。 如果有人可以指出我要阅读的正确 Atom,我会很好地阅读它......我什至似乎无法在文档中找到它。 “比特率”在整个文档中只提到了几次。 更新 >>> 根据@szatmary 下面提供的非常有限的信息,我已经从相关的Track Atom解析了Sample Size Atom和Time to Sample Atom ,但是我得到了一些奇怪的值。 例如,我不断收到的样本大小值1 (恒定比特率从多个不同的单个视频传送文件读取时)。 相关文档(来自上面的链接)说: 样本量指定样本大小的 32 位整数。 如果所有样本的大小相同,则此字段包含该大小值。 如果此字段设置为 0,则样本具有不同的大小,并且这些大小存储在样本大小表中。 因此,字段具有的值1 ,这意味着所有样品都具有相同的尺寸,并且条目的数量[在样本大小表],在时间到样本表单个条目中的采样计数字段的字段匹配(一些非常大的数字)。 文档说明了这一点: ...如果视频媒体具有恒定的帧速率,则此表将有一个条目,计数将等于样本数。
  • Python 批量下载BiliBili视频 打包成软件
    文章目录 一、项目概述1.项目背景2.环境配置下载ffmpeg设置环境变量 二、项目实施1.导入需要的库2.设置请求参数3.基本处理4.下载视频5.视频和音频合并成完整的视频6.3种下载方式的分别实现7.主函数 三、项目分析和说明1.结果测试改进说明2.软件打包3.改进分析4.合法性说明 如有需要购买用于个人或公司使用的小伙伴可选择百度云或者华为云服务器,点击华为云服务器优惠链接或扫描下方二维码即可享受采购季优惠价: 一、项目概述 1.项目背景 有一天,我突然想找点事做,想起一直想学但是没有学的C语言,就决定来学一下。 可是怎么学呢?看书的话太无聊,报班学呢又快吃土了没钱,不如去B站看看? 果然,关键字C语言搜索,出现了很多C语言的讲课视频: B站https://www.bilibili.com/是一个很神奇的地方,简直就是一个无所不有的宝库,几乎可以满足你一切的需求和视觉欲。不管你是想看动画、番剧 ,还是游戏、鬼畜 ,亦或科技和各类教学视频 ,只要你能想到的,基本上都可以在B站找到。对于程序猿或即将成为程序猿的人来说,B站上的编程学习资源是学不完的,可是B站没有提供下载的功能,如果想保存下载在需要的时候看,那就是一个麻烦了。我也遇到了这个问题,于是研究怎么可以实现一键下载视频,最终用Python这门神奇的语言实现了。 2.环境配置 这次项目不需要太多的环境配置
  • 如何在 SDCard (eclipse, android) 上查找所有音频文件(How to find all audio files on SDCard (eclipse, android))
    问题 我已经有了这个代码......但我也想通过子文件夹进行搜索,而不是仅仅通过 sdcard.sdcard.sorry 搜索我的英语;)谢谢你的帮助,vinzenz public class SongsManager { // SDCard Path final String MEDIA_PATH = new String("/sdcard/"); private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); // Constructor public SongsManager(){ **strong text** } /** * Function to read all mp3 files from sdcard * and store the details in ArrayList * */ public ArrayList<HashMap<String, String>> getPlayList(){ File home = new File(MEDIA_PATH); if (home.listFiles(new FileExtensionFilter()).length > 0) { for (File file : home
  • 将音频文件流传输到网站用户/收听者的最佳方法是什么[关闭](What is the best way to stream a audio file to website users/listeners [closed])
    问题 Closed. This question needs to be more focused. It is not currently accepting answers. Want to improve this question? Update the question so it focuses on one problem only by editing this post. Closed 2 years ago. Improve this question I'm developing a music site which will stream audio files stored in a server to users, audio files will be played through flash player placed in a webpage.. As I heard I need to use a streaming media server for streaming audio files ( like 2mb to 3mb in size).. Do I need to use one? I found some streaming media server softwares like http://www.icecast.org -
  • 从音频(或视频)文件生成波形?(Generating a waveform from an audio (or video) file?)
    问题 我试图了解如何从音频(或视频)文件生成波形以显示给用户。 我已经在谷歌上搜索了很长一段时间,如果不使用 FFmpeg 之类的东西,我无法确定这在 Qt 中是否可行。 我已经看到了所有这些类:QMediaPlayer、QMediaContent、QMediaResource、QAudioProbe 并尝试了 Qt 媒体播放器示例,但只是没有看到我可以访问实际音频缓冲区的位置。 所以我有两个问题: 如果没有 3rd 方库,我想做的事情甚至可能吗? 如果可能的话,某种灵魂可以概述我需要阅读和理解的内容才能访问音频数据 我已经尝试过这个问题的建议(使用 QMediaPlayer 进行音频可视化),但是audioProbe->setSource(player)的结果始终为 false,并且永远不会调用processBuffer方法。 audioProbe = new QAudioProbe(this); bool success = audioProbe->setSource(player); qDebug() << success; connect(audioProbe, SIGNAL(audioBufferProbed(QAudioBuffer)), this, SLOT(processBuffer(QAudioBuffer))); 更新:添加一些额外的细节以澄清事情。 为了测试