我正在尝试使用android中的ffmpeg命令将序列图像转换为视频。我已经为android构建了ffmpeg,并将ffmpeg二进制文件放在/data/local文件夹中。我在Android中使用Runtime.getruntime.execute("mycommand")运行ffmpeg命令。
mycommand的结构如下所示
"/data/local/ffmpeg -r 40 qscale 2 -i /mnt/sdcard/images/img%d.jpg /mnt/sdcard/images/finalvideo.mp4" mycommand包含我放置所有序列图像的文件夹的路径。运行此命令会出现错误"protocol not found“。
我还读到了ffmpeg文档中默认的文件协议。
如何运行这样的命令?
在运行像ffmpeg -i /mnt/sdcard/vid.mp4这样的简单命令之后,我得到了错误
ffmpeg version 0.11.1.git Copyright (c) 2000-2012 the FFmpeg developers
built on Sep 26 2012 11:58:35 with gcc 4.4.3 (GCC)
configuration: --target-os=linux --prefix=/home/esteves/android-ffmpeg --enable-cross-compile --enable-runtime-cpudetect --disable-asm --arch=arm --cc=/home/esteves/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --cross-prefix=/home/esteves/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- --disable-stripping --nm=/home/esteves/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-nm --sysroot=/home/esteves/android-ndk/platforms/android-8/arch-arm --enable-nonfree --enable-version3 --disable-everything --enable-gpl --disable-doc --enable-avresample --enable-demuxer=amr --enable-demuxer=aac --enable-demuxer=rawvideo --enable-demuxer=rtsp --enable-muxer=rtsp --enable-muxer=flv --enable-muxer=mpegts --enable-muxer=mp4 --enable-demuxer=rtp --enable-demuxer=rtp --disable-ffplay --disable-ffserver --enable-ffmpeg --disable-ffprobe --enable-libx264 --enable-encoder=libx264 libavutil 51. 72.100 / 51. 72.100
libavcodec 54. 55.100 / 54. 55.100
libavformat 54. 25.105 / 54. 25.105
libswscale 2. 1.101 / 2. 1.101
error of main libswresample 0. 15.100 / 0. 15.100
error of main libpostproc 52. 0.100 / 52. 0.100
/mnt/sdcard/vid.mp4: Protocol not found发布于 2017-04-28 03:22:43
避免使用--disable-everything编译
它将禁用所有组件,包括协议支持。
如果必须使用--disable-everything
您必须手动启用所需的组件,如--enable-protocols或以零散的方式启用,如--enable-protocol=file,pipe。然而,这很难做到,因为用户经常忘记启用他们需要的东西。有关更多信息,请参见./configure --help的输出。
发布于 2017-04-27 20:04:38
它是ffmpeg编译器problem.You应该启用配置中相关协议。这是我的配置,你可以参考一下:
export TMPDIR=/Users/yourpath/SourceCode/FFmpeg/tmpdir
NDK=/Users/yourpath/Android/android-ndk-r10d
SYSROOT=$NDK/platforms/android-16/arch-arm/
TOOLCHAIN=/Users/yourpath/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
CPU=arm
PREFIX=/Users/liuchao/SourceCode/FFmpeg/ffmpeg_install/
#ADDI_CFLAGS="-marm"
ADDI_CFLAGS="-mfpu=neon -mfloat-abi=softfp"
function build_one
{
./configure \
--prefix=$PREFIX \
--target-os=linux \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--arch=arm \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
--nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
--disable-shared \
--enable-static \
--disable-asm \
--disable-yasm \
--enable-gpl \
--enable-stripping \
--enable-runtime-cpudetect \
--enable-cross-compile \
--enable-version3 \
--enable-nonfree
--enable-libx265 \
--enable-w32threads \
--enable-hwaccels \
--enable-neon \
--enable-decoders \
--enable-devices \
--enable-encoders \
--enable-muxers \
--enable-encoder=rawvideo \
--enable-protocols \
--enable-protocol=file \
--enable-avfilter \
--enable-network \
--enable-avdevice \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAGhttps://stackoverflow.com/questions/12948165
复制相似问题