❶ 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方法都刪除。
❷ android手機用x264編碼能達到什麼速度呢和intel的cpu差距大嗎
我在網上找了一段300幀的yuv視頻
Input #0, yuv4mpegpipe, from 'akiyo_qcif.y4m':0KB sq= 0B f=0/0
Duration: N/A, bitrate: N/A
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 176x144, SAR 128:
117 DAR 1408:1053, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
一下是三種不同的測試結果
x264 只使用1個核心
x264 使用4個核心
x264 自動識別核心數
使用單線程,每秒處理80幀
四線程,立刻飆升到每秒196幀
自動模式(這里返回值也會是4),162幀
由於這里測試並沒有進行多次取平均數,只是為驗證多線程在多核下的提升,所以可以總結出
性能提升非常明顯,有興趣的朋友,可以下載我的x264 armv7 neon 多核測試包試試
❸ Android如何播放mov格式的視頻文件
Android播放「mov」格式的視頻文件時,可以藉助第三方軟體將「mov」格式轉換成「mp4」。
此處以微信為例,具體步驟如下:
1、打開安卓手機的微信軟體,點開任意聊天框將「mov」格式的視頻發送過去。
MP4與MOV的區別:
「mp4」格式的視頻相比起「mov」格式的視頻體積要小得多,前者格式壓縮率相比後者要大得多,雖然相對來說更省存儲空間,但畫質將會受到影響,很不利於後期編輯和製作,尤其是後期特效和調色。
這一點很像數碼相機的RAW格式和jpeg格式,前者為無損壓縮格式後者則是有損壓縮格式,前者的後期調整餘地更大。這也是很多資深的攝影者更願意用前者拍攝的原因。