1. Enhance the Android multimedia framework providing additional Plugins for
user interaction
2. FFmpeg provides demuxers and av codecs;
-3. NamExtractor is a extractor plugin, it would be loaded by Stagefright when
- Stagefright started.
-4. NamExtractor will load FFmpegExtractor, MplayerExtractor and VLCExtractor.
- but only FFmpegExtractor is implemented now.
-5. FFmpegExtractor is the reference to "ffmpeg/ffplay" to achieve.
-6. libstagefright_soft_ffmpegvdec plugin is video decoder
-7. libstagefright_soft_ffmpegadec plugin is audio decoder
+3. FFmpegExtractor is a extractor plugin.
+4. libstagefright_soft_ffmpegvdec plugin is video decoder
+5. libstagefright_soft_ffmpegadec plugin is audio decoder
================================================================================
Why is named nam[NamExtractor]?
Requirements
================================================================================
-CyanogenMod 9.x (Ice Cream Sandwich)
-http://wiki.cyanogenmod.com/wiki/Galaxy_Nexus_(GSM):_Compile_CyanogenMod_(Linux)
+1. android_frameworks_native:
+https://github.com/omxcodec/android_frameworks_native.git
+branch: cm_maguro-10.1
-FFMPEG-1.0 release
-http://ffmpeg.org
-ref: git://android.git.linaro.org/platform/external/ffmpeg.git
+2. android_frameworks_av:
+https://github.com/omxcodec/android_frameworks_av.git
+branch: cm_maguro-10.1
+
+3. android_external_ffmpeg
+git@github.com:omxcodec/android_external_ffmpeg
+branch: cm_maguro-10.1
================================================================================
- How to build
+How to build
================================================================================
1. Get the Source
- clone cm-9.1.0 source from CyanogenMod git:
- repo init -u git://github.com/CyanogenMod/android.git -b cm-9.1.0
- plz ref: http://wiki.cyanogenmod.com/wiki/Galaxy_Nexus_(GSM):_Compile_CyanogenMod_(Linux)
-
- clone my sources from the omxcodec{github} git!
in your "android/external" folder, run:
- stagefright-plugins:
+ stagefright-plugins(branch: master):
git clone git@github.com:omxcodec/stagefright-plugins.git stagefright-plugins
- ffmpeg:
- git clone git@github.com:omxcodec/android_external_ffmpeg.git ffmpeg -b omxcodec-1.0
-
- in your "android/external" folder, run:
- cp stagefright-plugins/repo/local_manifest.xml ../.repo
- cd .. // go to android folder
- repo sync // sync "frameworks_base" code again!
-
- "repo sync" sync "frameworks_base" code again! of course, you can merge my
- android_external_ffmpeg code instread of "repo sync" frameworks_base. once you do,
- so you should pay attention to the "USES_NAM" flag, it is only in the
- "android/frameworks/base" directory
+ ffmpeg(branch: cm_maguro-10.1):
+ git clone git@github.com:omxcodec/android_external_ffmpeg.git ffmpeg -b cm_maguro-10.1
+
+ android_frameworks_native and android_frameworks_av:
+ you should merge my android_frameworks_native(branch: cm_maguro-10.1) and
+ android_frameworks_av(branch: cm_maguro-10.1) code. once you do, you should pay attention to
+ the "USES_NAM" flag, it is only in the "android/frameworks/native" and "android/frameworks/av"
+ directories.
2. Compile
- add USES_NAM flag to COMMON_GLOBAL_CFLAGS in android build system
- vi vendor/samsung/maguro/BoardConfigVendor.mk and add these lines to it
- USES_NAM := true
- ifdef USES_NAM
- COMMON_GLOBAL_CFLAGS += -DUSES_NAM
- endif
-
- ffmpeg:
- cd android/external/ffmpeg
- mm ffmpeg // NOT "mm", plz FIXME!
-
- cd android/external/stagefright-plugins
- mm
+ add USES_NAM flag to COMMON_GLOBAL_CFLAGS in your android build system(e.g. my device: maguro)
+ vi vendor/samsung/maguro/BoardConfigVendor.mk and add this line to it
+ COMMON_GLOBAL_CFLAGS += -DUSES_NAM
+ then compile your android source tree again!
3. Install
adb root
get test media files:
wget http://movies.apple.com/media/us/ipad/2012/tv-spots/apple-ipad-this_good-us-20120307_848x480.mov
wget http://movies.apple.com/media/us/ipad/2012/80ba527a-1a34-4f70-aae8-14f87ab76eea/tours/apple-ipad-feature-us-20120307_848x480.mp4
+ wget http://ftp.kw.bbc.co.uk/hevc/hm-10.0-anchors/bitstreams/i_main/BQMall_832x480_60_qp22.bin
let us suppose your media files locate at "/sdcard/Movies/" folder.
one console window, you should run:
+ adb logcat -c //clears (flushes) the entire log and exits.
adb logcat
and other cosole window, you should run:
- test NamExtractor and FFmpegExtractor plugins:
+ test FFmpegExtractor plugins:
adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-this_good-us-20120307_848x480.mov -t video/*
adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-feature-us-20120307_848x480.mp4 -t video/*
test SoftFFmpegVideo decoder plugin:
adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-this_good-us-20120307_848x480.mov -t video/*
adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/apple-ipad-feature-us-20120307_848x480.mp4 -t video/*
+ test HEVC(H.265) decoder:
+ cd android/external/stagefright-plugins/tools folder, run:
+ adb root
+ ./install // install my scripts
+ adb root && adb shell set-vdec-drop // disable drop video frames
+ adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/Movies/BQMall_832x480_60_qp22.bin -t video/*
+
run it and enjoy!
================================================================================
- Features
+Features
================================================================================
Input formats:
MP4 / MOV / 3GP
Matroska (MKV)
Real(RM,RMVB)
WAV
+ FLV
+ SWF
+ APE
+ DTS
+ FLAC
+ WAV
+ OGG
+ Raw HEVC(H.265) bitstreams
-Video formats:
+Video decoders:
MPEG-1/2
MPEG-4
H.263
H.264 / MPEG-4 AVC
WMV 1/2
WMV 3 / WMV-9 / VC-1
- Real Video
-
-Audio formats:
- MPEG Layer 1/2
- MP3 - MPEG Layer 3
- AAC - MPEG-4 part3
- AC3 - A/52 (Dolby Digital)
+ RV (Real Video)
+ VP8
+ FLV1
+ DIVX
+ HEVC(H.265)
+
+Audio decoder:
+ MP2 (MPEG Layer 2)
+ MP3 (MPEG Layer 3)
+ AAC (MPEG-4 part3)
+ AC3
WMA 1/2
WMA 3
- Real Audio
- AMR (3GPP)
+ RA (Real Audio)
+ APE
+ DTS
+ FLAC
+ VORBIS
================================================================================
- Known issues
+Known issues
================================================================================
1. some .mov movies do not av resync when seeking
2. some video stream ended while seeking
If you need help with the library, or just want to discuss nam related issues,
you can contact me: Michael Chen (omxcodec@gmail.com)
-