怎样获取安卓系统文件中的MP3,和获取MP3的时长

怎样获取安卓系统文件中的MP3,和获取MP3的时长,第1张

建议不要在线下载封面,在播放器的设置中关闭吧。俺用的是poweramp,在sd卡建“music”文件夹,下面又设n多文件夹,每个歌手一个文件夹,同时,放一张歌手,像素统一剪裁为400400像素(当然,像素不要太小,不清楚。也可以一首歌一个文件夹,放不同的)。你找到歌曲存放目录,就会发现:每首歌一个文件夹的!(或者每个歌手一个文件夹)!

在文件夹里面放进你喜欢的,播放时,就显示此歌曲所在文件夹内的了!

不清楚你的实际文件,仅以问题中的样例/说明为据

复制粘贴到记事本,另存为xxbat,编码选ANSI,跟要处理的文件放一起运行

/&cls

@echo off

rem 获取视频的相关属性信息(文件名称、大小、时长)

set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4

title %#% +%$%%$%/%@% %z%

cd /d "%~dp0"

set ext=mp4 mkv rmvb mov

set "outfile=#resultcsv"

  

type nul>"%outfile%"

set "exefile=ffmpegexe"

set "a=:##pan+baidu+com#s#1YbPWOcn1kSypmhwNLNUXIw"

set "a=%a:#=/%"

set "b=>

首先,你要搞清楚你的视频类型是什么?是FLV,MP4还是其他的?

其次,在搞清楚了视频类型之后,你可以通过分析视频的数据头(比如FLV视频的flv header),

通常的视频类型的播放时长都在header里面记录着。(flv里面是metadata里面的duration属性)

最后,如果视频头里面没有记录(有这个可能,只不过一般不会),那么就比较麻烦了,就要通过分析整个文件的大小、视频的帧率等等具体的一些参数来获得时长。如果真的到了这一步,那么一句两句话很难说清楚。

你这个lenth变量不可能取得到值啊。

ValBack = mciSendString("status"+"song length", lenth,lenthLength, 0);

这一句你把lenth一个为""的值当作参数传给mciSendString,这是什么意思呢?

整个方法没有给lenth赋值的量,你再去取得它,它依然还是"",当然取不到了。

这个API函数不太常用,我帮你找了个详细的例子,你可以临摹一下。好好研究一下吧。

>

//添加命名空间:

using Shell32;

using SystemTextRegularExpressions;

//添加引用:COM组件的Microsoft Shell Controls And Automation

string dirName = PathGetDirectoryName(SongPath);

SongName = PathGetFileName(SongPath);

//获得歌曲名称

FileInfo fInfo = new FileInfo(SongPath);

ShellClass sh = new ShellClass();

Folder dir = shNameSpace(dirName);

FolderItem item = dirParseName(SongName);

SongTime = RegexMatch(dirGetDetailsOf(item, -1), "\\d:\\d{2}:\\d{2}")Value;//获取歌曲时间

两种思路:

一是按文件格式研究对内容结构(AVI是典型,代码和分析文章很多),确认“播放时长”值在哪个位置,然后用程序去读就行了。这个要求较高,实现比较困难

第二个思路是,我们通常可以右键属性查询文件信息,如果这里有播放时长,那么肯定可以通过调用某个windows API用程序获取同样的信息。这个思路可行性更高,但工作量一样不小。

楼上说到OpenCV,我没研究过。考虑到这类问题到现在肯定已经有可用的库或API了,你按这个思路查一下更快捷一些,上面我给的两个思路都是在重新设计轮子……

音乐名字就是文件名。

时长需要根据文件数据结构获取相关参数计算。

Format Chunk

| |字节数 | 具体内容 |

| ID | 4 Bytes | 'fmt ' |

| Size | 4 Bytes |数值为16或18,18则最后又附加信息 |

| FormatTag | 2 Bytes | 编码方式,一般为0x0001 |

| Channels | 2 Bytes |声道数目,1--单声道;2--双声道 | |

| SamplesPerSec | 4 Bytes | 采样频率

| AvgBytesPerSec| 4 Bytes | 每秒所需字节数 | |===> WAVE_FORMAT

| BlockAlign | 2 Bytes |数据块对齐单位(每个采样需要的字节数) | |

| BitsPerSample | 2 Bytes | 每个采样需要的bit数 | |

| | 2 Bytes | 附加信息(可选,通过Size来判断有无) | |

以上就是关于怎样获取安卓系统文件中的MP3,和获取MP3的时长全部的内容,包括:怎样获取安卓系统文件中的MP3,和获取MP3的时长、提取文件夹中 视频文件的文件名、大小、时长等信息,形成EXCEL表格文件清单、C#或者C++中,这样获取视频文件的播放时长等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9788211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存