Android FFmpeg报告“找不到文件协议”

时间:2012-10-18 06:11:41

标签: android command-line ffmpeg

我正在尝试使用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包含放置所有序列图像的文件夹的路径。运行此命令会给出错误“找不到协议”。

另外,我在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

2 个答案:

答案 0 :(得分:2)

避免使用--disable-everything

进行编译

它将禁用所有组件,包括协议支持。

如果您必须使用--disable-everything

您必须手动启用所需的组件,例如--enable-protocols,或者以零碎的方式启用--enable-protocol=file,pipe。但是,这很难做到,因为用户经常忘记启用他们需要的东西。有关详细信息,请参阅./configure --help的输出。

答案 1 :(得分:0)

这是ffmpeg编译问题。您应该在configure中启用协议。 这是我的配置,你可以参考:

function creatediv(id, ax,ay, bx,by, size, opacity, color) { 

  var length = Math.hypot(by-ay, bx-ax),
      deg    = Math.atan2(by-ay, bx-ax) * 180 / Math.PI,
      newdiv = document.createElement('div'),
      css    = {
        width: length + "px",
        height: (size||2) + "px",
        left: ax + "px",
        top: ay + "px",
        background: color || "red",
        opacity: opacity || 1,
        transformOrigin: "left 50%",
        transform: "rotate("+ deg +"deg)",
        position: "absolute"
      };
      
  for(var s in css) newdiv.style[s] = css[s];
  document.body.appendChild(newdiv); 
}

creatediv("a",  0,30,   10,10);
creatediv("b",  10,10,  60,80,  5,  0.3,  "#0bf");
creatediv("c",  60,80,  70,50);
creatediv("d",  70,50,  150,90, null, null, "gold");