導航:首頁 > 操作系統 > vplayerandroid源碼

vplayerandroid源碼

發布時間:2022-07-18 19:39:15

android-ffmpeg-x264 怎麼用

Android內置的編解碼器實在太少,於是我們需要FFmpeg。Android提供了NDK,為我們使用FFmpeg這種C語言代碼提供了方便。
不過為了用NDK編譯FFmpeg,還真的花費了不少時間,也得到了很多人的幫助,最應該謝謝havlenapetr。我覺得我現在這些方法算是比較簡潔的了--
下面就盡量詳細的說一下我是怎麼在項目中使用FFmpeg的,但是基於我混亂的表達能力,有不明白的就問我。
你得了解JNI和Android NDK的基本用法,若覺得我的文章還不錯,可以看之前寫的JNI簡單入門和Android NDK入門
首先創建一個標準的Android項目vPlayer
android create project -n vPlayer -t 8 -p vPlayer -k me.abitno.vplayer -a PlayerView
然後在vPlayer目錄里
mkdir jni && cd jni
wget http://ffmpeg.org/releases/ffmpeg-0.6.tar.bz2
tar xf ffmpeg-0.6.tar.bz2 && mv ffmpeg-0.6 ffmpeg && cd ffmpeg
在ffmpeg下新建一個config.sh,內容如下,注意把PREBUILT和PLATFORM設置正確。另外裡面有些參數你也可以自行調整,我主要是為了配置一個播放器而這樣設置的。
#!/bin/bash

PREBUILT=/home/abitno/Android/android-ndk-r4/build/prebuilt/linux-x86/arm-eabi-4.4.0
PLATFORM=/home/abitno/Android/android-ndk-r4/build/platforms/android-8/arch-arm

./configure --target-os=linux \
--arch=arm \
--enable-version3 \
--enable-gpl \
--enable-nonfree \
--disable-stripping \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--disable-encoders \
--disable-muxers \
--disable-devices \
--disable-protocols \
--enable-protocol=file \
--enable-avfilter \
--disable-network \
--disable-mpegaudio-hp \
--disable-avdevice \
--enable-cross-compile \
--cc=$PREBUILT/bin/arm-eabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-eabi- \
--nm=$PREBUILT/bin/arm-eabi-nm \
--extra-cflags="-fPIC -DANDROID" \
--disable-asm \
--enable-neon \
--enable-armv5te \
--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"
運行config.sh開始configure
chmod +x config.sh
./config.sh
configure完成後,編輯剛剛生成的config.h,找到這句
#define restrict restrict
Android的GCC不支持restrict關鍵字,於是修改成下面這樣
#define restrict
編輯libavutil/libm.h,把其中的static方法都刪除。

Ⅱ ndk arm 編譯 顯示android-19\arch-arm\usr\lib: Permission denied

首先創建一個標準的Android項目vPlayer
android create project -n vPlayer -t 8 -p vPlayer -k me.abitno.vplayer -a PlayerView

然後在vPlayer目錄里
mkdir jni && cd jni
wget htt p:/ /ffmpe g.o rg/releases/ffmpeg-0.6.t ar.bz2
tar xf ffmpeg-0.6.tar.bz2 && mv ffmpeg-0.6 ffmpeg && cd ffmpeg

在ffmpeg下新建一個config.sh,內容如下,注意把PREBUILT和PLATFORM設置正確。另外裡面有些參數你也可以自行調整,我主要是為了配置一個播放器而這樣設置的。
#!/bin/bash

PREBUILT=/home/abitno/Android/android-ndk-r4/build/prebuilt/linux-x86/arm-eabi-4.4.0
PLATFORM=/home/abitno/Android/android-ndk-r4/build/platforms/android-8/arch-arm

Ⅲ 安卓上有什麼和蘋果avplayer一樣的app嗎。。vplayer不算

你常用avplayer的什麼功能呢?如果只是想要播放多格式視頻,Moboplayer就不錯。

Ⅳ vplayer怎麼看sd卡里的文件我安卓手機安裝了Vp|ayer,但只能看到手機內存中的視頻

是的。每一款播放軟體,都只認自己下載的視頻。比如,您用360影視大全緩存的視頻,如果想在騰訊視頻里看,那就看不到了,因為不是它緩存的,所以就不認了,也就無法看了。

Ⅳ 我的手機是安卓2.2.2系統,我想用天天瀏覽器上優酷看視頻,怎樣把全能播放器(Vplayer)設為默認播放器

在你手機上隨便打開一個視頻文件,在系統彈出的對話框中先把「默認使用此方式發送」的鉤打上,再選擇Vplayer就OK了

Ⅵ 安卓手機視頻播放器中:rockplayer,MoboPlayer,MX視頻播放器,VPlayer全能視頻播放器哪個好,求指點

幾款都用過,個人認為:

rockplayer的軟解碼能力最強,支持的格式最多

MoboPlayer的界面很絢,解碼能力也不錯

MX Player的獨門絕活是可以半硬半軟,怎麼說呢,就是視頻用硬解,聲音用軟解碼。這對於某些720P的視頻能夠充分利用U的硬解能力,其它播放器必須視頻音頻都符合硬解的標准才硬解碼

VPlayer界面很簡單,軟解碼的能力也不錯,運行效率很高,在一些600Mhz的V6 CPU機器上能夠流暢運行

Ⅶ 什麼播放器可以播放VPL格式的視頻

VPlayer是Android平台的一款全新的視頻播放器,支持格式非常多,有Divx/Xvid, flv, rmvb, avi, mkv, wmv, mp4,號稱:全能播放器,而且是免費的!最大的缺點就是需要android 2.2以上rom支持,初步測試,支持視頻格式性能非常優秀。
更新:
1.支持全屏,你可以像9使用Google地圖一樣用兩個手指來切換全屏顯示。
2.更好用的文件瀏覽器。
3.修復了3gp文件播放的Bug。

Ⅷ 如何用Android NDK編譯FFmpeg

Android NDK編譯FFmpeg

配置編譯環境

在 VirtualBox 中創建一個 Ubuntu 虛擬機

在 Ubuntu 虛擬機中使用 sudo passwd root 命令啟動 root 賬戶

用 root 賬戶登錄進入 Ubuntu

將 android-ndk-r4b-linux-x86.zip 中的內容解壓縮到 /root 目錄下

將 android-sdk_r07-linux_x86.tgz 中的內容解壓縮到 /root 目錄下

將 ffmpeg-0.6.1.tar.bz2 中的內容解壓縮到 /root/ffmpeg/jni 目錄下

三、准備編譯 FFmpeg

編寫 mk 文件

在 /root/ffmpeg/jni 目錄中創建一個 Android.mk 文件,內容如下

?1include $(all-subdir-makefiles)

在 /root/ffmpeg/jni/ffmpeg-0.6.1 目錄中創建一個 Android.mk 文件,內容如下

6LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_WHOLE_STATIC_LIBRARIES := libavformat libavcodec libavutil
libpostproc libswscale

LOCAL_MODULE := ffmpeg

include $(BUILD_SHARED_LIBRARY)

include $(call all-makefiles-under,$(LOCAL_PATH))

在 /root/ffmpeg/jni/ffmpeg-0.6.1 目錄中創建一個 av.mk 文件,內容如下

# LOCAL_PATH is one of libavutil, libavcodec, libavformat, or
libswscale

#include $(LOCAL_PATH)/../config-$(TARGET_ARCH).mak

include $(LOCAL_PATH)/../config.mak

OBJS :=

OBJS-yes :=

MMX-OBJS-yes :=

include $(LOCAL_PATH)/Makefile

# collect objects

OBJS-$(HAVE_MMX) += $(MMX-OBJS-yes)

OBJS += $(OBJS-yes)

FFNAME := lib$(NAME)

FFLIBS := $(foreach,NAME,$(FFLIBS),lib$(NAME))

FFCFLAGS = -DHAVE_AV_CONFIG_H -Wno-sign-compare -Wno-switch
-Wno-pointer-sign

FFCFLAGS += -DTARGET_CONFIG=/"config-$(TARGET_ARCH).h/"

ALL_S_FILES := $(wildcard $(LOCAL_PATH)/$(TARGET_ARCH)/*.S)

ALL_S_FILES := $(addprefix $(TARGET_ARCH)/, $(notdir $(ALL_S_FILES)))

ifneq ($(ALL_S_FILES),)

ALL_S_OBJS := $(patsubst %.S,%.o,$(ALL_S_FILES))

C_OBJS := $(filter-out $(ALL_S_OBJS),$(OBJS))

S_OBJS := $(filter $(ALL_S_OBJS),$(OBJS))

else

C_OBJS := $(OBJS)

S_OBJS :=

endif

C_FILES := $(patsubst %.o,%.c,$(C_OBJS))

S_FILES := $(patsubst %.o,%.S,$(S_OBJS))

FFFILES := $(sort $(S_FILES)) $(sort $(C_FILES))

在 /root/ffmpeg/jni/ffmpeg-0.6.1/libavcodec 目錄中創建一個 Android.mk 文件,內容如下

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include $(LOCAL_PATH)/../av.mk

LOCAL_SRC_FILES := $(FFFILES)

LOCAL_C_INCLUDES := /

$(LOCAL_PATH) /

$(LOCAL_PATH)/..

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

LOCAL_MODULE := $(FFNAME)

include $(BUILD_STATIC_LIBRARY)

在 /root/ffmpeg/jni/ffmpeg-0.6.1/libavformat 目錄中創建一個 Android.mk 文件,內容如下

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include $(LOCAL_PATH)/../av.mk

LOCAL_SRC_FILES := $(FFFILES)

LOCAL_C_INCLUDES := /

$(LOCAL_PATH) /

$(LOCAL_PATH)/..

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_CFLAGS += -include "string.h" -Dipv6mr_interface=ipv6mr_ifindex

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

LOCAL_MODULE := $(FFNAME)

include $(BUILD_STATIC_LIBRARY)

在 libavfilter、libavutil、libpostproc 和 libswscale 目錄中各創建一個 Android.mk
文件,內容如下

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include $(LOCAL_PATH)/../av.mk

LOCAL_SRC_FILES := $(FFFILES)

LOCAL_C_INCLUDES := /

$(LOCAL_PATH) /

$(LOCAL_PATH)/..

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

LOCAL_MODULE := $(FFNAME)

include $(BUILD_STATIC_LIBRARY)

修改 libm.h 文件和 Makefile 文件

編輯 /root/ffmpeg/jni/ffmpeg-0.6.1/libavutil 目錄中的 libm.h 文件,刪除以下 static
方法

#if !HAVE_LRINT

static av_always_inline av_const long int lrint(double x)

{

return rint(x);

}

#endif /* HAVE_LRINT */

#if !HAVE_LRINTF

static av_always_inline av_const long int lrintf(float x)

{

return (int)(rint(x));

}

#endif /* HAVE_LRINTF */

#if !HAVE_ROUND

static av_always_inline av_const double round(double x)

{

return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5);

}

#endif /* HAVE_ROUND */

#if !HAVE_ROUNDF

static av_always_inline av_const float roundf(float x)

{

return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5);

}

#endif /* HAVE_ROUNDF */

#if !HAVE_TRUNCF

static av_always_inline av_const float truncf(float x)

{

return (x > 0) ? floor(x) : ceil(x);

}

#endif /* HAVE_TRUNCF */

編輯 libavcodec、libavfilter、libavformat、libavutil、libpostproc 和 libswscale
目錄中的 Makefile 文件,刪除

?1include $(SUBDIR)../subdir.mak



?1include $(SUBDIR)../config.mak

生成 config.h 文件

在 /root/ffmpeg/jni/ffmpeg-0.6.1 目錄中創建一個 config.sh 文件,使用 Android NDK r4b
編譯時內容如下

#!/bin/bash

PREBUILT=/root/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0

PLATFORM=/root/android-ndk-r4b/build/platforms/android-8/arch-arm

./configure --target-os=linux /

--arch=arm /

--enable-version3 /

--enable-gpl /

--enable-nonfree /

--disable-stripping /

--disable-ffmpeg /

--disable-ffplay /

--disable-ffserver /

--disable-ffprobe /

--disable-encoders /

--disable-muxers /

--disable-devices /

--disable-protocols /

--enable-protocol=file /

--enable-avfilter /

--disable-network /

--disable-mpegaudio-hp /

--disable-avdevice /

--enable-cross-compile /

--cc=$PREBUILT/bin/arm-eabi-gcc /

--cross-prefix=$PREBUILT/bin/arm-eabi- /

--nm=$PREBUILT/bin/arm-eabi-nm /

--extra-cflags="-fPIC -DANDROID" /

--disable-asm /

--enable-neon /

--enable-armv5te /

--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x
-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib
$PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o
$PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"

使用 Android NDK r5 編譯時內容如下

#!/bin/bash

PREBUILT=/root/android-ndk-r5/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86

PLATFORM=/root/android-ndk-r5/platforms/android-8/arch-arm

./configure --target-os=linux /

--arch=arm /

--enable-version3 /

--enable-gpl /

--enable-nonfree /

--disable-stripping /

--disable-ffmpeg /

--disable-ffplay /

--disable-ffserver /

--disable-ffprobe /

--disable-encoders /

--disable-muxers /

--disable-devices /

--disable-protocols /

--enable-protocol=file /

--enable-avfilter /

--disable-network /

--disable-mpegaudio-hp /

--disable-avdevice /

--enable-cross-compile /

--cc=$PREBUILT/bin/arm-eabi-gcc /

--cross-prefix=$PREBUILT/bin/arm-eabi- /

--nm=$PREBUILT/bin/arm-eabi-nm /

--extra-cflags="-fPIC -DANDROID" /

--disable-asm /

--enable-neon /

--enable-armv5te /

--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x
-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib
$PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o
$PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"

打開終端,進入 /root/ffmpeg/jni/ffmpeg-0.6.1 目錄,運行下面的命令

閱讀全文

與vplayerandroid源碼相關的資料

熱點內容
閩政通無法請求伺服器是什麼 瀏覽:44
怎麼做積木解壓神器 瀏覽:199
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:868
程序員編迷你世界代碼 瀏覽:895
php取現在時間 瀏覽:246
單片機高吸收 瀏覽:427
怎麼區分五代頭是不是加密噴頭 瀏覽:244
hunt測試伺服器是什麼意思 瀏覽:510
2013程序員考試 瀏覽:641
畢業論文是pdf 瀏覽:736
伺服器跑網心雲劃算嗎 瀏覽:471
單片機定時器計數初值的計算公式 瀏覽:801
win7控制台命令 瀏覽:567
貓咪成年app怎麼升級 瀏覽:692
360有沒有加密軟體 瀏覽:315
清除cisco交換機配置命令 瀏覽:751
華為刪除交換機配置命令 瀏覽:473
shell打包命令 瀏覽:827
加密狗插上輸不了密碼 瀏覽:187