[关闭]
@hai046 2016-10-13T09:29:46.000000Z 字数 4147 阅读 1397

FFmpeg android

ffmpeg android


静态库

静态库类型 大小 说明
armeabi-v7a-neon 4.6M -
armeabi-v7a 4.7M -
x86 5.3M -

测试文件

测试文件 android录制
320x240;
duration:9-10s;
rotate:90;
filesize:500k-600k
bitrate:512kb[动态]

执行命令

执行命令

  1. ffmpeg -i qq.mp4 -vf "movie=icon.png [watermark]; [in][watermark] overlay=(W-w)/2:(H-h)/2 [out]" -c:v libx264 qq.mp4

执行测试

手机 cpu型号 静态库类型 时间 说明
xiaomi note pro armeabi-v8a-neon armeabi-v7a 12-14s 第一次18s左右
xiaomi note pro armeabi-v8a-neon armeabi-v7a-neon 7-9s 第一次10s左右
Vivo X5L note pro armeabi-v7a-neon armeabi-v7a-neon 7-9s 第一次9s左右
Vivo X5L note pro armeabi-v7a-neon armeabi-v7a 14s 第一次15s左右
我的mac官方模拟器nexus5x x64 x64 9-10s 9-10s

应该需要区分neon的cpu型号

android configure简要配置说明

  1. ./configure \
  2. …………
  3. --disable-everything \#关闭所有模块,然后一个个的开 否则默认下静态库18M
  4. --enable-runtime-cpudetect \
  5. --enable-pic \
  6. --enable-libx264 \ #使用x264视频编码器 libx264是h264编码器的开源实现
  7. --disable-libfribidi \
  8. --disable-libmp3lame \
  9. --enable-pthreads \
  10. --disable-ffserver \
  11. --disable-version3 \
  12. --enable-hardcoded-tables \
  13. --disable-ffplay \
  14. --disable-ffprobe \
  15. --enable-gpl \
  16. --enable-yasm \
  17. --disable-doc \
  18. --disable-shared \
  19. --enable-static \
  20. --disable-ffserver \
  21. --disable-avdevice \
  22. --disable-filters \
  23. --enable-filter=movie \#水印需要用
  24. --enable-filter=overlay \#水印需要用
  25. --enable-filter=scale \#overlay依赖
  26. --enable-filter=transpose \#这个是个坑,andorid录制的视频是旋转90度的,需要开通旋转配置 竟然不是 rotate 😳
  27. --enable-avfilter \
  28. --disable-devices \
  29. --enable-network \
  30. --enable-encoder=aac \
  31. --enable-encoder=libx264 \
  32. --enable-encoder=png \
  33. --enable-decoder=h264 \
  34. --enable-decoder=aac \
  35. --enable-decoder=png \
  36. --enable-protocol=file \
  37. --enable-parser=h264 \
  38. --enable-parser=aac \
  39. --enable-parser=aac_latm \
  40. --enable-parser=png \
  41. --enable-muxer=mp4 \
  42. --enable-muxer=h264 \
  43. --enable-muxer=image2 \
  44. --enable-muxer=a64 \
  45. --enable-muxer=ac3 \
  46. --enable-muxer=apng \
  47. --enable-muxer=bit \
  48. --enable-muxer=data \
  49. --enable-muxer=ffm \
  50. --enable-muxer=ffmetadata \
  51. --enable-muxer=framecrc \
  52. --enable-muxer=framemd5 \
  53. --enable-muxer=latm \
  54. --enable-muxer=flac \
  55. --enable-muxer=m4v \
  56. --enable-muxer=matroska \
  57. --enable-muxer=matroska_audio \
  58. --enable-muxer=mmf \
  59. --enable-muxer=segment \
  60. --enable-muxer=uncodedframecrc \
  61. --enable-muxer=wav \
  62. --enable-muxer=yuv4mpegpipe \
  63. --enable-muxer=image2pipe \
  64. --enable-muxer=ipod \
  65. --enable-muxer=psp \
  66. --enable-demuxer=bit \
  67. --enable-demuxer=segafilm \
  68. --enable-demuxer=image2pipe \
  69. --enable-demuxer=image_png_pipe \
  70. --enable-demuxer=image_qdraw_pipe \
  71. --enable-demuxer=mpegvideo \
  72. --enable-demuxer=rawvideo \
  73. --enable-demuxer=sdp \
  74. --enable-demuxer=image2 \
  75. --enable-demuxer=h264 \
  76. --enable-demuxer=aac \
  77. --enable-demuxer=yuv4mpegpipe \
  78. --enable-demuxer=mpegvideo \
  79. --enable-demuxer=data \
  80. --enable-demuxer=ffm \
  81. --enable-demuxer=flic \
  82. --enable-demuxer=fourxm \
  83. --enable-demuxer=frm \
  84. --enable-demuxer=flac \
  85. --enable-bsf=hevc_mp4toannexb \
  86. --enable-bsf=h264_mp4toannexb \
  87. --enable-indev=fbdev \
  88. --disable-debug \
  89. --pkg-config="${2}/ffmpeg-pkg-config" \
  90. --prefix="${2}/build/${1}" \
  91. --extra-cflags="-I${TOOLCHAIN_PREFIX}/include $CFLAGS" \
  92. --extra-ldflags="-L${TOOLCHAIN_PREFIX}/lib $LDFLAGS" \
  93. --extra-libs="-lpng -lexpat -lm" \
  94. --extra-cxxflags="$CXX_FLAGS"

具体的armeabi-v7a-neon配置清单

  1. install prefix /root/ffmpeg-android/build/armeabi-v7a-neon
  2. source path .
  3. C compiler /root/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi-gcc
  4. C library bionic
  5. host C compiler gcc
  6. host C library glibc
  7. ARCH arm (cortex-a8)
  8. big-endian no
  9. runtime cpu detection yes
  10. ARMv5TE enabled yes
  11. ARMv6 enabled yes
  12. ARMv6T2 enabled yes
  13. VFP enabled yes
  14. NEON enabled yes
  15. THUMB enabled no
  16. debug symbols no
  17. strip symbols yes
  18. optimize for size no
  19. optimizations yes
  20. static yes
  21. shared no
  22. postprocessing support yes
  23. new filter support yes
  24. network support yes
  25. threading support pthreads
  26. safe bitstream reader yes
  27. SDL support no
  28. opencl enabled no
  29. texi2html enabled no
  30. perl enabled yes
  31. pod2man enabled yes
  32. makeinfo enabled no
  33. makeinfo supports HTML no
  34. Enabled programs:
  35. ffmpeg
  36. External libraries:
  37. libx264 zlib
  38. Enabled decoders:
  39. aac h264 png
  40. Enabled encoders:
  41. aac libx264 png
  42. Enabled hwaccels:
  43. Enabled parsers:
  44. aac aac_latm flac h264 png
  45. Enabled demuxers:
  46. aac ffm frm image_png_pipe mpegvideo sdp
  47. asf flac h264 image_qdraw_pipe rawvideo segafilm
  48. bit flic image2 mov rm yuv4mpegpipe
  49. data fourxm image2pipe mpegts
  50. Enabled muxers:
  51. a64 ffm h264 latm mmf segment
  52. ac3 ffmetadata image2 m4v mov uncodedframecrc
  53. apng flac image2pipe matroska mp4 wav
  54. bit framecrc ipod matroska_audio psp yuv4mpegpipe
  55. data framemd5
  56. Enabled protocols:
  57. file rtp udp
  58. Enabled filters:
  59. aformat atrim movie overlay setpts trim
  60. anull format null scale transpose
  61. Enabled bsfs:
  62. h264_mp4toannexb hevc_mp4toannexb
  63. Enabled indevs:
  64. Enabled outdevs:
  65. +
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注