Articles of ffmpeg

使用MediaCodec记录曲面

因此,在我的应用程序中,我能够使用GPUImage库向来自Camera的video显示效果(如模糊滤镜,高斯)。 基本上,I(库)将从Camera获取输入,获取原始字节数据,从YUV格式将其转换为RGBA格式,然后将效果应用于此图像并使用OpenGL在GLSurfaceView的Surface上显示。 最后,对于用户来说,它看起来像是应用了效果的video。 现在我想使用MediaCodec API将Surface的帧记录为video。 但是这个讨论说我们无法将预定义的Surface传递给MediaCodec 。 我在bigflake上看到了一些使用MediaCodec.createInputSurface()创建Surface样本,但对我来说, Surface来自GLSurfaceView 。 那么,如何将Surface的帧记录为video? 我将并行录制音频,使用FFMPEG合并该video和音频,并作为应用效果的video呈现给用户。

编译FFMPEG以获取命令行用法

我一直在尝试编译FFMPEG,所以我可以在我的Android应用程序中使用命令。 结果应该是1个静态文件“ffmpeg”,它不依赖于包。 没有.so文件。 我设法用guardianProject编译它,一切正常,但源太旧,缺乏我需要的选项。 我在VirtualBox上使用最新的Ubuntu,所有必需品都已安装和更新(gawk,yasm,aptitude等…)。 网络上有很多例子。 以下是我尝试过的每个选项遇到的问题。 我很感激以下任何一个错误的帮助: Guardian项目 – 我设法编译它并获取ffmpeg文件,但它使用的旧版本的ffmpeg不包含”-movFlags faststart”选项。 我尝试在那里抛出新的ffmpeg(2.3.3),但它只是抛出错误。 (我运行了git submodule init并更新) JayH5 – 一个更通用的构建文件,基本上应该适用于每个ffmpeg。 我更新了构建脚本以使用最新的NDK,它似乎正在工作但是它失败了/home/dor/Desktop/ndk/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail. 我读到了这个,似乎需要一个黑客,我不明白如何实现。 Trovao – 这是一个非常好的项目,构建脚本甚至可以下载最新的ffmpeg和x264源代码,我甚至成功将其编译为FFMPEG和X264文件,但是当我使用它时,我收到此错误: could not load library “libx264.so.142这很奇怪,因为x264就在那里,这个项目的整个想法是取消.so文件的需要。 我很感激帮助找出如何解决任何问题。 我更喜欢使用JayH5构建脚本,因为它似乎是最直接的… JayH5构建文件: #!/bin/bash # set the base path to your Android NDK (or export NDK to environment) if [[ […]

VideoView可以在不停止流的情况下分离和重新连接吗?

我正在构建一个应用程序,用户点击按钮以全屏显示video。 最初,video附加到ViewPager内的视图。 为了能够全屏显示,我将其与父项分离,并将其重新连接到根视图。 这种方法很好,除非在播放时将video切换到全屏。 当我分离播放VideoView时,它就停止了,我需要重新启动它。 这是不可接受的,因为video在恢复之前开始缓冲。 这里是完成分离的代码部分: final ViewGroup parent = (ViewGroup) findViewById(R.id.parent); final ViewGroup root = (ViewGroup) findViewById(R.id.root); Button b = (Button) findViewById(R.id.button); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { parent.removeView(mVideoView); LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); root.addView(mVideoView, lp); } }); 根据设备,我有一个不同的日志错误。 可能是因为实际的video播放器是由制造商而不是Android SDK提供的。 以下是Nexus 7的错误日志: 10-30 20:26:18.618: D/NvOsDebugPrintf(124): NvMMDecTVMRDestroyParser Begin 10-30 […]

使用librtmp为android构建FFMPEG

我正在尝试使用NDK r7b构建FFMPEG的一体化静态二进制文件,一切正常,直到我尝试使用RTMP支持构建它。 我是来自https://github.com/guardianproject/android–ffmpeg与librtmp2.4和自定义配置这样的来源 .configure \ –target-os=linux \ –cross-prefix=arm-linux-androideabi- \ –arch=arm \ –sysroot=/home/andrey/android-ndk-r7b/platforms/android-3/arch-arm \ –enable-static \ –disable-shared \ –disable-symver \ –enable-small \ –disable-devices \ –disable-avdevice \ –enable-gpl \ –enable-librtmp \ –prefix=../build/ffmpeg/armeabi \ –extra-cflags=-I../rtmpdump/librtmp \ –extra-ldflags=-L../rtmpdump/librtmp \ 和rtmpdump目录位于与ffmpeg相同的级别。 据我所知,我的配置中的最后两个字符串说明编译器可能findlibrtmp的来源。 但我得到的只是ERROR: librtmp not found 我并没有对NDK进行过任何考验,而且我很遗憾地错过了一些重要的部分,但我自己找不到它。

Android ffmpeg和硬件加速

我希望我的video流应用程序能够利用android中的硬件加速。 我只限于udpvideo广播所以我不能使用Android媒体播放器,所以我打算使用ffmpeg。 有没有办法让ffmpeg在android上使用硬件加速?

HTML5video – 在Android设备上准确搜索框架?

我正在制作一个应用程序,需要在浏览器中,跨桌面和移动设备(包括Cordova的打包应用程序)对video进行帧精确搜索。 桌面浏览器和iOS设备(包括打包应用程序和通过Safari)一样工作正常,但Android设备似乎只在video中显示关键帧 (也称为帧内帧或i帧)。 我在jsfiddle上设置了一个测试页面来帮助演示我的问题 。 该video已使用ZenCoder进行编码。 它的帧速率为23.976,关键帧每250帧。 video本身显示当前帧索引,因此您可以轻松地看到只有0,250和500帧的帧正在Android设备上显示,无论您在何处寻找。 在这个阶段,我会对在Android浏览器中运行的解决方案或作为Cordova的打包应用程序感到满意(我也尝试过使用Crosswalk WebView但无济于事)。

将图像合并到音频文件中并以编程方式在android中制作video文件

我阅读了ffmpeg库的教程,将图像合并到音频文件中。 这看起来非常复杂,并且环境值的错误为null。 我研究了很多,但没有find任何解决方案。 Android中是否有任何方法可以合并图像和音频文件来制作video?

arm-linux-androideabi-gcc无法创建可执行文件 – 为android armeabi设备编译ffmpeg

我正在尝试为android armeabi设备编译ffmpeg。 我正在关注roman10.net的教程 他给定的构建脚本为armv7-a设备构建了ffmpeg。 我想为armeabi建造它。 我的最终目标是在android armeabi和armv7-a设备上运行ffmpeg命令。 所以我改变了脚本的CPU部分 #arm v7vfpv3 CPU=armv7-a OPTIMIZE_CFLAGS=”-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU ” PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG= build_one 至 #arm v6 CPU=armv6 OPTIMIZE_CFLAGS=”-marm -march=$CPU” PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG= build_one (我认为将它改为armv6会构建与armeabi设备兼容的ffmpeg。我错了吗?) 疑惑1: 我还需要更换工具链吗? 即从arm-linux-androideabi-4.4.3到arm-eabi-4.4.0 ????? 疑惑2: 当我尝试运行./build.sh(不更改工具链)时,它会给我以下错误: /home/chaitanya/android/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc is unable to create an executable file. C compiler test failed. If you think configure made a mistake,.. blaah […]

FFMPEG for Android工具链:arm-linux-armeabi-eabi-pkg-config – 是否存在包含pkg-config工具的任何工具链

有没有人知道包含arm-linux-androideabi-pkg-config工具的ffmpeg linux arm平台的任何工具链? Android NDK不包含它。 还有没有人成功构建包含alsa设备的android的ffmpeg? 请注意,我的Ubuntu x86 PC上有libasound。 经过非常广泛的研究访问论坛,包括ffmpeg.org,ffmpeg – nabbles,groups.google.com,包括andro和android-ndk gropus,以及一般的互联网,我没有成功find任何似乎知道它存在的人。 充其量,我读过有人说忽略它。 考虑到需要什么,我认为这是一个天真的事情。 仔细检查标准ffmpeg configure脚本会显示,对于某些输入和输出设备,需要一个描述为pkg_config_default = pkg-config的工具链。 此外,HAVE_LIST上的所有项目都是系统相关的。 configure脚本非常清楚地说明了每个indev或outdev项所需的依赖项。 显然,此工具用于validation依赖项所需的库 当您尝试为android配置ffmpeg时会发生这种情况 jasongipsyblues @ android-master:〜/ android-ffmpeg / Project / jni $ ./configure_ffmpeg.sh … … .. …. 许可证:GPL版本3或更高版本创建config.mak和config.h … config.h没有变化 config.asm不变 libavutil / avconfig.h保持不变 警告:/ home / jasongipsyblues / Desktop / apps / android-ndk-r8b / […]

正确构建适用于所有Android架构的FFmpeg

我为所有Android架构构建了ffmpeg库。 但是有些细节令我困惑。 首先让我逐步解释我是如何建立的。 我从https://www.videolan.org/developers/x264.html下载了最新版本的libx264 创建并运行build_all.sh脚本(在x264文件夹中),用于(几乎)所有Android平台创建库。 然后我在x264文件夹中获得了android文件夹。 例如android/arm android/arm64 android/x86 android/x86_64在x264文件夹中。 我从https://ffmpeg.org/download.html下载了ffmpeg3.3.4 我创建了4个ffmpeg3.3.4文件夹。 用android架构名称命名它们。 像ffmpeg3.3.4-arm64 ffmpeg3.3.4-arm ffmpeg3.3.4-x86 ffmpeg3.3.4-x86_64 为android的每个平台创建了build_(architecture-name).sh。 ‘named’.sh files根据它们的体系结构名称将每个’named’.sh files移动到命名的ffmpeg文件夹。 例如build_android_x86.sh => ffmpeg3.3.4-x86 build_android_arm64.sh示例 #!/bin/bash #Change NDK to your Android NDK location NDK=$HOME/Android/Sdk/ndk-bundle PLATFORM=$NDK/platforms/android-21/arch-arm64/ PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64 GENERAL=”\ –enable-small \ –enable-cross-compile \ –extra-libs=”-lgcc” \ –arch=aarch64 \ –cc=$PREBUILT/bin/aarch64-linux-android-gcc \ –cross-prefix=$PREBUILT/bin/aarch64-linux-android- \ –nm=$PREBUILT/bin/aarch64-linux-android-nm \ –extra-cflags=”-I../x264/android/arm64/include” \ –extra-ldflags=”-L../x264/android/arm64/lib” ” […]