Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FFmpeg-无法识别的选项';地图[outv]和#x27;_Ffmpeg_Java - Fatal编程技术网

FFmpeg-无法识别的选项';地图[outv]和#x27;

FFmpeg-无法识别的选项';地图[outv]和#x27;,ffmpeg,java,Ffmpeg,Java,我正在将一些视频文件与FFmpeg合并,并且我的自定义版本存在问题。我使用以下Java代码包装ffmpeg命令: List<String> cmds = new ArrayList<>(); cmds.add("ffmpeg"); cmds.add("-i"); cmds.add("input1.mp4"); ... cmds.add("-map [outv]"); cmds.add("-map [a]"); ... cmds.add("output.mp4"); Pr

我正在将一些视频文件与FFmpeg合并,并且我的自定义版本存在问题。我使用以下Java代码包装ffmpeg命令:

List<String> cmds = new ArrayList<>();
cmds.add("ffmpeg");
cmds.add("-i");
cmds.add("input1.mp4");
...
cmds.add("-map [outv]");
cmds.add("-map [a]");
...
cmds.add("output.mp4");

ProcessBuilder pb = new ProcessBuilder(cmds);
pb.directory(fileExec);
Process process = pb.start();
int exitVal = process.waitFor();
我得到一个错误:

Unrecognized option 'map [outv]'.
是否缺少包含映射的配置选项?在哪里可以找到map命令需要哪些选项的信息?还是我的ffmpeg和其他许多类似的问题一样太老了?2015-02-25是最近的事

完全命令:

ffmpeg -y -i VID_20150609_154943_5583.mp4 -i VID_20150609_154943_24253.mp4 -i VID_20150609_154943_16083.mp4 -i stamp.png -f lavfi -i color=black -filter_complex " [0:v]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(ow-iw*min(ow/iw\,oh/ih))/2:(oh-ih*min(ow/iw\,oh/ih))/2,format=pix_fmts=yuva420p,fade=t=out:st=7.99:d=2:alpha=1,setpts=expr=PTS-STARTPTS[va0] ; [0:a]afade=t=out:st=7.99:d=2[a0] ; [1:v]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(ow-iw*min(ow/iw\,oh/ih))/2:(oh-ih*min(ow/iw\,oh/ih))/2,format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1,fade=t=out:st=15.98:d=2:alpha=1,setpts=expr=PTS-STARTPTS+7.99/TB[va1] ; [1:a]afade=t=in:st=0:d=2,afade=t=out:st=15.98:d=2[a1] ; aevalsrc=0:d=7.99[s1] ; [s1][a1]concat=n=2:v=0:a=1[ac1] ; [2:v]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(ow-iw*min(ow/iw\,oh/ih))/2:(oh-ih*min(ow/iw\,oh/ih))/2,format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1,setpts=expr=PTS-STARTPTS+15.98/TB[va2] ; [2:a]afade=t=in:st=0:d=2[a2] ; aevalsrc=0:d=15.98[s2] ; [s2][a2]concat=n=2:v=0:a=1[ac2] ; [4:v]scale=1280x720,trim=duration=23.97[over0] ; [a0][ac1][ac2]amix=inputs=3[a]; [over0][va0]overlay[over1];[over1][va1]overlay[over2];[over2][va2]overlay[over3] ; [over3][3:v]overlay=main_w-overlay_w:main_h-overlay_h:format=yuv420[outv] " -c:v libx264 -preset ultrafast -b:v 45000k -aspect 1.7777778 -map [outv] -map [a] -c:a libfdk_aac -ac 2 -b:a 128k -t 23.97 VID_20150609_155417.mp4
ffmpeg version git-2015-02-25-b0d3322 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.8 (GCC)
  configuration: --arch=arm --cpu=cortex-a8 --target-os=linux --enable-runtime-cpudetect --enable-pic --disable-shared --enable-static --cross-prefix=/home/jon/Development/android-ndk-r10d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --enable-cross-compile --sysroot=/home/jon/Development/android-ndk-r10d/platforms/android-9/arch-arm/ --extra-cflags='-I../x264 -mfloat-abi=softfp -mfpu=neon -fPIE -pie' --extra-ldflags='-L../x264 -fPIE -pie' --enable-version3 --enable-gpl --disable-doc --enable-yasm --disable-decoders --enable-decoder='mpeg4,aac,h264,mpegvideo,mpeg1video,mpeg2video,png,mjpeg' --disable-encoders --enable-encoder='mpeg4,aac,h264,libx264,mpeg1video,mpeg2video,png' --disable-parsers --enable-parser='aac,mpeg4video,ac3,h261,h264,vc1,mpegvideo' --disable-demuxers --enable-demuxer='aac,h264,mpegvideo,m4v,mov,vc1,mp4,concat,image2' --disable-muxers --enable-muxer='h264,mpeg1video,mpeg2video,m4v,mov,vc1,md5,mp4' --enable-protocols --enable-indev='v4l,v4l2' --disable-filters --enable-filter='aresample,scale,movie,overlay' --enable-avfilter --disable-indevs --enable-indev=lavfi --disable-outdevs --enable-hwaccels --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-symver --enable-network --enable-libx264 --enable-zlib
  libavutil      54. 19.100 / 54. 19.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 23.105 / 56. 23.105
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.101 /  5. 11.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Unrecognized option 'map [outv]'.

这个问题实际上不是ffmpeg的问题,而是Java函数ProcessBuilder的错误用法。在向ProcessBuilder提供字符串参数列表时,我给出了
['ffmpeg,'-map[outv]',…]
。相反,它应该是
['ffmpeg,'-map','[outv]',…]
,因为ProcessBuilder将每个列表项视为一个参数。因此ffmpeg无法识别参数
'map[outv]'


感谢@slhck帮助我解决了这个问题。

这个问题实际上不是ffmpeg的问题,而是Java函数ProcessBuilder的错误用法。在向ProcessBuilder提供字符串参数列表时,我给出了
['ffmpeg,'-map[outv]',…]
。相反,它应该是
['ffmpeg,'-map','[outv]',…]
,因为ProcessBuilder将每个列表项视为一个参数。因此ffmpeg无法识别参数
'map[outv]'


感谢@slhck帮助我解决了这个问题。

请不要缩写您的命令并显示完整的未剪切命令行输出。理想情况下,显示再现问题的最小命令。这是什么操作系统/外壳?
map
与其值之间是否存在任何不可见的不间断空格?当您将标签置于引号中时,即
-map“[outv]”
,它是否起作用?为什么你对
过滤器的引用是印刷式的(
而不是
)?@slhck我添加了完整的命令。操作系统是Android。我认为
-map
选项的格式是我通常使用的格式,但我不确定。我认为
只是我复制命令的地方的遗迹,因为它不在新的副本中。谢谢。嗯……我没有看到任何明显的东西。事实上,它显示了
map[outv]
作为一个无法识别的选项,意味着它认为它们实际上没有被一个空格隔开。您是否尝试过一个非常简单的
-filter\u complex
来排除其他选项的问题?常规的
ffmpeg-i input.mp4-c copy-map 0:0-map 0:1 output.mp4是否有效?(
-map
选项本身始终存在;它不依赖于任何配置选项,而且它在ffmpeg中已经存在了很长时间)。我唯一能想到的是
map
[outv]之间的非空格字符
能否将Java源代码添加到您的问题中,以便我们将其迁移到堆栈溢出?这确实是一个编程问题,我不想在这里结束它。只要您提到
ProcessBuilder
或Java上下文,有类似问题的人可能会发现它更容易。@slhck好的,听起来不错。请不要重复b删除您的命令并显示完整的未剪切命令行输出。理想情况下,显示再现问题的最小命令。这是什么操作系统/shell?在
映射
与其值之间是否有任何不可见的不间断空格?当您将标签置于引号中时,即
-map”[outv]是否有效“
?为什么你对
过滤器的引用是印刷式的(
而不是
)?@slhck我添加了完整的命令。操作系统是Android。我认为
-map
选项的格式是我通常的格式,但我不确定。我认为
只是我复制命令的地方的遗迹,因为它不在新的副本中。谢谢。嗯……我没有看到任何明显的东西。事实上,它显示了
map[outv]
作为一个无法识别的选项,意味着它认为它们实际上没有被一个空格隔开。您是否尝试过一个非常简单的
-filter\u complex
来排除其他选项的问题?常规的
ffmpeg-i input.mp4-c copy-map 0:0-map 0:1 output.mp4是否有效?(
-map
选项本身始终存在;它不依赖于任何配置选项,而且它在ffmpeg中已经存在了很长时间)。我唯一能想到的是
map
[outv]之间的非空格字符
请将您的Java源代码添加到您的问题中,这样我们就可以将其迁移到堆栈溢出?这确实是一个编程问题,我不想在这里结束它。只要您提到
ProcessBuilder
或Java上下文,有类似问题的人可能会发现它更容易。@slhck OK,听起来不错。
ffmpeg -y -i VID_20150609_154943_5583.mp4 -i VID_20150609_154943_24253.mp4 -i VID_20150609_154943_16083.mp4 -i stamp.png -f lavfi -i color=black -filter_complex " [0:v]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(ow-iw*min(ow/iw\,oh/ih))/2:(oh-ih*min(ow/iw\,oh/ih))/2,format=pix_fmts=yuva420p,fade=t=out:st=7.99:d=2:alpha=1,setpts=expr=PTS-STARTPTS[va0] ; [0:a]afade=t=out:st=7.99:d=2[a0] ; [1:v]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(ow-iw*min(ow/iw\,oh/ih))/2:(oh-ih*min(ow/iw\,oh/ih))/2,format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1,fade=t=out:st=15.98:d=2:alpha=1,setpts=expr=PTS-STARTPTS+7.99/TB[va1] ; [1:a]afade=t=in:st=0:d=2,afade=t=out:st=15.98:d=2[a1] ; aevalsrc=0:d=7.99[s1] ; [s1][a1]concat=n=2:v=0:a=1[ac1] ; [2:v]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(ow-iw*min(ow/iw\,oh/ih))/2:(oh-ih*min(ow/iw\,oh/ih))/2,format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1,setpts=expr=PTS-STARTPTS+15.98/TB[va2] ; [2:a]afade=t=in:st=0:d=2[a2] ; aevalsrc=0:d=15.98[s2] ; [s2][a2]concat=n=2:v=0:a=1[ac2] ; [4:v]scale=1280x720,trim=duration=23.97[over0] ; [a0][ac1][ac2]amix=inputs=3[a]; [over0][va0]overlay[over1];[over1][va1]overlay[over2];[over2][va2]overlay[over3] ; [over3][3:v]overlay=main_w-overlay_w:main_h-overlay_h:format=yuv420[outv] " -c:v libx264 -preset ultrafast -b:v 45000k -aspect 1.7777778 -map [outv] -map [a] -c:a libfdk_aac -ac 2 -b:a 128k -t 23.97 VID_20150609_155417.mp4
ffmpeg version git-2015-02-25-b0d3322 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.8 (GCC)
  configuration: --arch=arm --cpu=cortex-a8 --target-os=linux --enable-runtime-cpudetect --enable-pic --disable-shared --enable-static --cross-prefix=/home/jon/Development/android-ndk-r10d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --enable-cross-compile --sysroot=/home/jon/Development/android-ndk-r10d/platforms/android-9/arch-arm/ --extra-cflags='-I../x264 -mfloat-abi=softfp -mfpu=neon -fPIE -pie' --extra-ldflags='-L../x264 -fPIE -pie' --enable-version3 --enable-gpl --disable-doc --enable-yasm --disable-decoders --enable-decoder='mpeg4,aac,h264,mpegvideo,mpeg1video,mpeg2video,png,mjpeg' --disable-encoders --enable-encoder='mpeg4,aac,h264,libx264,mpeg1video,mpeg2video,png' --disable-parsers --enable-parser='aac,mpeg4video,ac3,h261,h264,vc1,mpegvideo' --disable-demuxers --enable-demuxer='aac,h264,mpegvideo,m4v,mov,vc1,mp4,concat,image2' --disable-muxers --enable-muxer='h264,mpeg1video,mpeg2video,m4v,mov,vc1,md5,mp4' --enable-protocols --enable-indev='v4l,v4l2' --disable-filters --enable-filter='aresample,scale,movie,overlay' --enable-avfilter --disable-indevs --enable-indev=lavfi --disable-outdevs --enable-hwaccels --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-symver --enable-network --enable-libx264 --enable-zlib
  libavutil      54. 19.100 / 54. 19.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 23.105 / 56. 23.105
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.101 /  5. 11.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Unrecognized option 'map [outv]'.