我正在尝试使用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
答案 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");