判断一个媒体文件是音频还是视频,用opencore如何实现?

bigpretty 2010-12-14 02:10:43
我没有看过代码,就实现这个简单的功能,希望用过的告诉我怎么实现,我对媒体的格式也不是很了解.
我的思路是先把文件作为一个流给读近来,任何对流头进行分析,有用于标记音频或视频的部分.想知道是怎么区分的.谢谢.如果有代码就更好了, 最好有代码。
java或者c++都可以
...全文
394 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigpretty 2010-12-17
  • 打赏
  • 举报
回复
我看了ffmpeg的代码。里面关于这部分也没有看明白。不知道他是如何实现区分的?你有相关资料吗?我刚接触,谢谢
bigpretty 2010-12-16
  • 打赏
  • 举报
回复
发现不能使用,怎么调用这个方法
bigpretty 2010-12-16
  • 打赏
  • 举报
回复
2.2可以得到了?我实验下 ,我用的2.1 好象没有这个方法
bigpretty 2010-12-16
  • 打赏
  • 举报
回复
mediascanner这个我知道,问题是我就是想判断sd卡里面的一个文件是音频还是视频。想自己写一个,参考opencore
DrSmart 2010-12-16
  • 打赏
  • 举报
回复
文件头根据格式定义,归原公司所有,比如exe的文件头开头可能为MZ,BMP的文件头开头两个字节为BM。你自己查表吧,有特征的
bigpretty 2010-12-16
  • 打赏
  • 举报
回复
那我该怎么解决?
NorZ 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bigpretty 的回复:]

对啊,后缀名不行。我读头文件后如何判断那?具体怎么实现?有的都是首先要解码进行的/
[/Quote]

他说的是读文件头,不是头文件.

Opencore中并没有识别文件类型的Node,都是在上层(java层)就获得fileformat然后传递下来调用相应的Node,如果Opencore找不到相应的Node,再返回错误
bigpretty 2010-12-16
  • 打赏
  • 举报
回复
对啊,后缀名不行。我读头文件后如何判断那?具体怎么实现?有的都是首先要解码进行的/
DrSmart 2010-12-16
  • 打赏
  • 举报
回复
楼主你是测试文件还是文件流,直接读取文件头就行了,后缀名根本不可靠吧。
ameyume 2010-12-15
  • 打赏
  • 举报
回复
android 2.2 MediaFile 源码分析
在MediaFile.java文件中,有个getFileType方法
返回类型有以下:
    // Audio file types
public static final int FILE_TYPE_MP3 = 1;
public static final int FILE_TYPE_M4A = 2;
public static final int FILE_TYPE_WAV = 3;
public static final int FILE_TYPE_AMR = 4;
public static final int FILE_TYPE_AWB = 5;
public static final int FILE_TYPE_WMA = 6;
public static final int FILE_TYPE_OGG = 7;
public static final int FILE_TYPE_AAC = 8;
private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3;
private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_AAC;

// MIDI file types
public static final int FILE_TYPE_MID = 11;
public static final int FILE_TYPE_SMF = 12;
public static final int FILE_TYPE_IMY = 13;
private static final int FIRST_MIDI_FILE_TYPE = FILE_TYPE_MID;
private static final int LAST_MIDI_FILE_TYPE = FILE_TYPE_IMY;

// Video file types
public static final int FILE_TYPE_MP4 = 21;
public static final int FILE_TYPE_M4V = 22;
public static final int FILE_TYPE_3GPP = 23;
public static final int FILE_TYPE_3GPP2 = 24;
public static final int FILE_TYPE_WMV = 25;
public static final int FILE_TYPE_ASF = 26;
private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4;
private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_ASF;

// Image file types
public static final int FILE_TYPE_JPEG = 31;
public static final int FILE_TYPE_GIF = 32;
public static final int FILE_TYPE_PNG = 33;
public static final int FILE_TYPE_BMP = 34;
public static final int FILE_TYPE_WBMP = 35;
private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG;
private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WBMP;

// Playlist file types
public static final int FILE_TYPE_M3U = 41;
public static final int FILE_TYPE_PLS = 42;
public static final int FILE_TYPE_WPL = 43;
private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U;
private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_WPL;
ameyume 2010-12-15
  • 打赏
  • 举报
回复
Android 多媒体扫描过程(Android Media Scanner Process)
http://yueguc.javaeye.com/blog/836964

android.media
Class MediaFile
有个getFileType(String path) 方法,返回文件的类型
http://www.androidjavadoc.com/1.1_r1_src/android/media/MediaFile.html#getFileType(java.lang.String)
ameyume 2010-12-15
  • 打赏
  • 举报
回复
如果是通过url查询,
MediaStore.Audio表示音频
MediaStore.Video表示视频
给定一个文件,判断是音频还是视频,就不知道了,通过后缀也到可以,但rm之类的文件格式就无法区分是音频还是视频了
yyb7618019 2010-12-15
  • 打赏
  • 举报
回复
不能通过文件名的后缀来判断?
bigpretty 2010-12-14
  • 打赏
  • 举报
回复
在线等,新手。谢谢

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧