android ffmpeg支持rmvb格式吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android ffmpeg支持rmvb格式吗相关的知识,希望对你有一定的参考价值。

参考技术A  要让ffmpeg支持硬解码就必须用android的媒体库 libstagefright
  下载libstagefright的花就要到ffmpeg 目录的tools 目录下面, 这里有个 build-libstagefright.sh , 其内容如下:
  #!/bin/bash
  #在这里添加你的NDK目录
  if [ "$NDK" = "" ]; then
  echo NDK variable not set, assuming $HOME/android-ndk
  export NDK=$HOME/android-ndk
  fi

  echo "Fetching Android system headers"
  git clone --depth=1 --branch gingerbread-release git://github.com/CyanogenMod/android_frameworks_base.git ../android-source/frameworks/base
  git clone --depth=1 --branch gingerbread-release git://github.com/CyanogenMod/android_system_core.git ../android-source/system/core

  echo "Fetching Android libraries for linking"
  # Libraries from any froyo/gingerbread device/emulator should work
  # fine, since the symbols used should be available on most of them.
  if [ ! -d "../android-libs" ]; then
  if [ ! -f "../update-cm-7.0.3-N1-signed.zip" ]; then
  wgethttp://download、cyanogenmod、com/get/update-cm-7.0.3-N1-signed.zip -P../
  fi
  unzip ../update-cm-7.0.3-N1-signed.zip system/lib/* -d../
  mv ../system/lib ../android-libs
  rmdir ../system
  fi

  SYSROOT=$NDK/platforms/android-9/arch-arm
  # Expand the prebuilt/* path into the correct one
  TOOLCHAIN=`echo $NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/*-x86`
  export PATH=$TOOLCHAIN/bin:$PATH
  ANDROID_SOURCE=../android-source
  ANDROID_LIBS=../android-libs
  ABI="armeabi-v7a"

  rm -rf ../build/stagefright
  mkdir -p ../build/stagefright

  DEST=../build/stagefright
  FLAGS="--target-os=linux --cross-prefix=arm-linux-androideabi- --arch=arm --cpu=armv7-a"
  FLAGS="$FLAGS --sysroot=$SYSROOT"
  FLAGS="$FLAGS --disable-avdevice --disable-decoder=h264 --disable-decoder=h264_vdpau --enable-libstagefright-h264"

  EXTRA_CFLAGS="-I$ANDROID_SOURCE/frameworks/base/include -I$ANDROID_SOURCE/system/core/include"
  EXTRA_CFLAGS="$EXTRA_CFLAGS -I$ANDROID_SOURCE/frameworks/base/media/libstagefright"
  EXTRA_CFLAGS="$EXTRA_CFLAGS -I$ANDROID_SOURCE/frameworks/base/include/media/stagefright/openmax"
  EXTRA_CFLAGS="$EXTRA_CFLAGS -I$NDK/sources/cxx-stl/gnu-libstdc /include -I$NDK/sources/cxx-stl/gnu-libstdc /libs/$ABI/include"

  EXTRA_CFLAGS="$EXTRA_CFLAGS -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
  EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -L$ANDROID_LIBS -Wl,-rpath-link,$ANDROID_LIBS -L$NDK/sources/cxx-stl/gnu-libstdc /libs/$ABI"
  EXTRA_CXXFLAGS="-Wno-multichar -fno-exceptions -fno-rtti"
  DEST="$DEST/$ABI"
  FLAGS="$FLAGS --prefix=$DEST"

  mkdir -p $DEST

  echo $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" --extra-cxxflags="$EXTRA_CXXFLAGS" > $DEST/info.txt
  #注意看这里是./configure,说明这个脚本要移动到上级目录去执行,也就是ffmpeg目录下。而不是仅仅把./configure 修改为 ../configure ,不然找不到头文件什么的,我之前说错了 sorry ./configure $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" --extra-cxxflags="$EXTRA_CXXFLAGS" | tee $DEST/configuration.txt
  [ $PIPESTATUS == 0 ] || exit 1
  make clean
  make -j4 || exit 1

  你会发现这里面绿色的两行是要用git工具的。 git是啥? github 专用的下载工具,功能和svn类似。
  这个东西用apt-get install 的方法居然装不上,后来用新立德软件管理器安装成功了,oh-yeah! 但是接下来遇到一个问题: 我们公司是有代理网关的, 通过网关要用户密码。 而git始终没有办法通过代理网关。
  网上提供的方法多半是装一个connect 工具, 进行端口转换。我觉得太麻烦了。经过一番折腾之后惊奇的发现,把 git://github.com/CyanogenMod/... 修改为https://github。com/CyanogenMod/ 就能下载了! !
  还在被代理困扰的孩纸们可以试试本回答被提问者和网友采纳

支持mpeg-4/h.263/h.264/h.265/vp8等格式 包含mp4 rmvb avi吗

关于视频转换的基础知识和本人自身经验:
  一,视频格式知识:首先要记住的是,文件的后缀名不代表其视频和音频的编码格式。
  1,封装格式:封装格式表明这个视频文件是用什么方案把视频流,音频流以及字幕融和在一个文件中。一般来说,视频文件的后缀名就是它的封装格式。常见的封转格式有MKV,MP4,RMVB,AVI,WMV。
  2,视频编码格式:视频格式表明用什么方案来处理,压缩画面,使之成为视频流。常见的有MPEG系列(具体有mpeg1,mpeg2,AVC,Divx,Xvid等);Real Video系列;AVI,WMV9等
  3,音频编码格式:声音的编码方案,常见的有mp3,aac,flac,ape等。

  音频文件一般是独立的,所以音频文件的后缀名就是它的编码格式。文件名为“xxxx.mp3”的文件就是mp3格式。
  视频文件一般是有画面有声音的,而画面跟声音原本是分开存在的,因此需要有方案将两者结合起来。而这些结合的方案就是所谓的封转格式。自然,字幕也成了可以加进去的对象。有些封装格式兼容性强,能兼容较多的视频格式和音频格式。
  比如一个文件名为“xxxxx.mkv”的文件,其视频格式可以是AVC;AVI;MPEG等格式中的一种,音频格式可以是mp3,aac,flac等格式中的一种,可能还包含着字幕文件。
  要说的是,网上的很多文件是以RMVB封装格式传输的。这个格式兼容性差,只支持本家的Real Video系列的视频编码格式。因此很多人因此认为文件的后缀名就是视频的编码格式,这是个误解!

  二,各种设备支持的格式:
  电脑当然是万能的,只要你硬件条件够,而且装了对应的解码器,就能播放放这些视频。现在的播放软件如暴风影音,QQ影音之类的,内嵌的解码器都基本上全了。
  我推荐射手影音播放器,除了播放功能之外无任何其他冗余的附件。万能且干净。
  DVD播放器支持面比较窄,一般是VOB封装格式,MPEG1或2的视频格式。
  手机:大部分能播放视频手机支持的封装格式是AVI;MP4;3GP。视频格式常见的是Divx;AVC,AVI。音频格式常见的是mp3,aac,flac。性能强的新款手机支持的就比较多。
  MP4和所谓的MP5:低端的支持的少,主要的也是AVI;MP4;3GP。高端的支持的多,现在的基本上都是全格式支持了。
  还有其他的设备就看说明书吧。

  本人从事MP3,MP4相关的工作。别看国产的mp3,mp4这么多,其实用的芯片的技术基本上还是来自国外的,而国外的观念跟我们大不一样,rmvb是没多少人理睬的,因此这些芯片基本上没有默认的支持rmvb的技术。体现在:制作中的安卓系统的产品,AVC等编码视频系统自带支持720P播放,rmvb只能软解码播放480P,1000kbps码率程度的。
  rmvb早已落后

  三,转换方案。
  本人一般用的软件是格式工厂,即不会太复杂,又具有比较强的自定义参数功能。

  1,了解你的设备支持什么格式。优先选择mkv或mp4封装格式,AVC视频格式,aac音频格式(一般人对音频要求不太高,可以根据设备支持什么来随意选)。
  2,了解你设备的分辨率,分辨率不是越高越好,而是最适合屏幕分辨率最好。
  3,了解你设备支持的帧数,范围一般是12帧到30帧。最好选20帧以上。
  4,源视频的宽高比不必管,设定好分辨率,在宽高比那里选“自动”就可以保持有效画面的宽高比。比如720P的视频转换为800X480的视频,会自动在上下各加15像素的黑边,保持中间的有效画面宽高比为16:9。
  5,分辨率,码率,帧数,二次编码与画面质量及文件体积大小的关系。
  码率够高,画质才够好;分辨率高了,码率也得提高,才能保持画面质量;码率越高,最终形成的文件体积越大;帧数影响小;二次编码是以较低码率获得较高画质的关键。
  有钱人,存储卡,内存容量大,不在乎文件大小的可以直接设定个高码率,不必启用二次编码。优点是转换速度快,缺点是转换出来的文件体积比较大。
  咱是穷人,存储卡容量小,最求性价比,因此我设个较低的码率。启用二次编码,花多一倍的时间。优点是同等画质下转出来的文件体积小,缺点是花的时间多。
  想好自己的定位吧,是第一种还是第二种。以上是以对画面质量比较敏感为前提的。

  例子:片源是720P的,格式工厂版本为2.60
  例一 例二 例三
  设备 手机:诺基亚5230 MP5:蓝晨BM566 视频网站高清视频
  类型(封转格式) MP4 MKV MP4
  视频格式 AVC AVC AVC
  屏幕大小 640X360 800X480 640X480
  比特率 500 700 600
  每秒帧数 30 29.97 20
  宽高比 自动 自动 自动
  二次编码 是 是 是

  音频格式 AAC AAC AAC
  采样率 44100 44100 44100
  比特率 96 128 96
参考技术A 下个暴风影音支持全部视频格式 参考技术B 你好亲,希望可以帮到你。1.这些都可以的,放心好啦。2.你可以到百度网上去搜索里面有你所需要的视频的。3你也可以下载一个百度影音或是叫硕鼠的软件就可以下载了。如果对亲有用,希望采纳,谢谢你的支持是对我最大的帮助。祝愿亲好运。本回答被提问者和网友采纳

以上是关于android ffmpeg支持rmvb格式吗的主要内容,如果未能解决你的问题,请参考以下文章

你的这个问题解决了吗 ffmpeg的问题

百度云是如何支持播放mkv和rmvb格式视频的

有支持M3U8格式的HTML5播放器吗

有支持M3U8格式的HTML5播放器吗

怎样实现自己写的Android视屏播放器播放rmvb格式的视频

有支持M3U8格式的HTML5播放器吗