Concat filter: Error initializing output stream

元气小坏坏 提交于 2020-07-22 06:10:33

问题


This is a follow-up question to: Flutter (Dart): Merge two videos and view the new output in the device's gallery (photos)

In essence, I am trying to record two videos, merge them and then view the new video in the gallery. I am currently having some issues with the flutter_ffmpeg package.

I uploaded the my Flutter project onto GitHub here:

https://github.com/IttaiBarkai/Flutter-Video-Merger

Below is a snippet of my code used to execute ffmpeg:

void _videoMerger() async {

    final appDir = await syspaths.getApplicationDocumentsDirectory();
    String rawDocumentPath = appDir.path;
    final outputPath = '$rawDocumentPath/output.mp4';

    final FlutterFFmpeg _flutterFFmpeg = new FlutterFFmpeg();

        String commandToExecute = '-y -i ${_storedVideoOne.path} -i ${_storedVideoTwo.path} -filter_complex \'[0:0][1:0]concat=n=2:v=1:a=0[out]\' -map \'[out]\' $outputPath';
        _flutterFFmpeg.execute(commandToExecute).then((rc) => print("FFmpeg process exited with rc $rc"));

  }

and this is the output displayed on my debug console when ffmpeg gets executed:

D/flutter-ffmpeg(29135): Running FFmpeg with arguments: [-y, -i, /storage/emulated/0/Android/data/com.example.video_merger_two/files/Pictures/1e8947f4-c9c2-4020-b78d-c40fb77ce0d16301015681843175998.mp4, -i, /storage/emulated/0/Android/data/com.example.video_merger_two/files/Pictures/3555b190-a9a6-450d-b6a7-7d1b8fc89ad38627500242651150494.mp4, -filter_complex, [0:0][1:0]concat=n=2:v=1:a=0[out], -map, [out], /data/user/0/com.example.video_merger_two/app_flutter/output.mp4].
    I/mobile-ffmpeg(29135): Loading mobile-ffmpeg.
    I/mobile-ffmpeg(29135): Loaded mobile-ffmpeg-https-x86-4.3.1-20200125.
    D/mobile-ffmpeg(29135): Callback thread started.
    I/mobile-ffmpeg(29135): ffmpeg version git-2020-01-25-fd11dd500
    I/mobile-ffmpeg(29135):  Copyright (c) 2000-2020 the FFmpeg developers
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):   built with Android (5220042 based on r346389c) clang version 8.0.7 (https://android.googlesource.com/toolchain/clang b55f2d4ebfd35bf643d27dbca1bb228957008617) (https://android.googlesource.com/toolchain/llvm 3c393fe7a7e13b0fba4ac75a01aa683d7a5b11cd) (based on LLVM 8.0.7svn)
    I/mobile-ffmpeg(29135):   configuration: --cross-prefix=i686-linux-android- --sysroot=/files/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-x86/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=i686 --cpu=i686 --cc=i686-linux-android24-clang --cxx=i686-linux-android24-clang++ --target-os=android --disable-neon --disable-asm --disable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --disable-v4l2-m2m --disable-outdev=v4l2 --disable-outdev=fbdev --disable-indev=v4l2 --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --di
    I/mobile-ffmpeg(29135):   libavutil      56. 38.100 / 56. 38.100
    I/mobile-ffmpeg(29135):   libavcodec     58. 65.102 / 58. 65.102
    I/mobile-ffmpeg(29135):   libavformat    58. 35.101 / 58. 35.101
    I/mobile-ffmpeg(29135):   libavdevice    58.  9.103 / 58.  9.103
    I/mobile-ffmpeg(29135):   libavfilter     7. 70.101 /  7. 70.101
    I/mobile-ffmpeg(29135):   libswscale      5.  6.100 /  5.  6.100
    I/mobile-ffmpeg(29135):   libswresample   3.  6.100 /  3.  6.100
    I/mobile-ffmpeg(29135): Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Android/data/com.example.video_merger_two/files/Pictures/1e8947f4-c9c2-4020-b78d-c40fb77ce0d16301015681843175998.mp4':
    I/mobile-ffmpeg(29135):   Metadata:
    I/mobile-ffmpeg(29135):     major_brand     :
    I/mobile-ffmpeg(29135): mp42
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     minor_version   :
    I/mobile-ffmpeg(29135): 0
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     compatible_brands:
    I/mobile-ffmpeg(29135): isommp42
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     creation_time   :
    I/mobile-ffmpeg(29135): 2020-06-17T18:26:00.000000Z
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     com.android.version:
    I/mobile-ffmpeg(29135): 10
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):   Duration:
    I/mobile-ffmpeg(29135): 27:34:19.38
    I/mobile-ffmpeg(29135): , start:
    I/mobile-ffmpeg(29135): 0.000000
    I/mobile-ffmpeg(29135): , bitrate:
    I/mobile-ffmpeg(29135): 0 kb/s
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Stream #0:0
    I/mobile-ffmpeg(29135): (eng)
    I/mobile-ffmpeg(29135): : Video: h264 (avc1 / 0x31637661), yuv420p(tv, GBR), 1280x720, 3554 kb/s
    I/mobile-ffmpeg(29135): , SAR 1:1 DAR 16:9
    I/mobile-ffmpeg(29135): ,
    I/mobile-ffmpeg(29135): 29.01 fps,
    I/mobile-ffmpeg(29135): 29 tbr,
    I/mobile-ffmpeg(29135): 90k tbn,
    I/mobile-ffmpeg(29135): 180k tbc    
    I/mobile-ffmpeg(29135):  (default)
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Metadata:
    I/mobile-ffmpeg(29135):       rotate          :
    I/mobile-ffmpeg(29135): 90
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):       creation_time   :
    I/mobile-ffmpeg(29135): 2020-06-17T18:26:00.000000Z
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):       handler_name    :
    I/mobile-ffmpeg(29135): VideoHandle
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Side data:
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135): displaymatrix: rotation of -90.00 degrees
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Stream #0:1
    I/mobile-ffmpeg(29135): (eng)
    I/mobile-ffmpeg(29135): : Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s
    I/mobile-ffmpeg(29135):  (default)
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Metadata:
    I/mobile-ffmpeg(29135):       creation_time   :
    I/mobile-ffmpeg(29135): 2020-06-17T18:26:00.000000Z
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):       handler_name    :
    I/mobile-ffmpeg(29135): SoundHandle
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135): Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Android/data/com.example.video_merger_two/files/Pictures/3555b190-a9a6-450d-b6a7-7d1b8fc89ad38627500242651150494.mp4':
    I/mobile-ffmpeg(29135):   Metadata:
    I/mobile-ffmpeg(29135):     major_brand     :
    I/mobile-ffmpeg(29135): mp42
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     minor_version   :
    I/mobile-ffmpeg(29135): 0
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     compatible_brands:
    I/mobile-ffmpeg(29135): isommp42
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     creation_time   :
    I/mobile-ffmpeg(29135): 2020-06-17T18:26:09.000000Z
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     com.android.version:
    I/mobile-ffmpeg(29135): 10
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):   Duration:
    I/mobile-ffmpeg(29135): 27:34:19.62
    I/mobile-ffmpeg(29135): , start:
    I/mobile-ffmpeg(29135): 0.000000
    I/mobile-ffmpeg(29135): , bitrate:
    I/mobile-ffmpeg(29135): 0 kb/s
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Stream #1:0
    I/mobile-ffmpeg(29135): (eng)
    I/mobile-ffmpeg(29135): : Video: h264 (avc1 / 0x31637661), yuv420p(tv, GBR), 1280x720, 3765 kb/s
    I/mobile-ffmpeg(29135): , SAR 1:1 DAR 16:9
    I/mobile-ffmpeg(29135): ,
    I/mobile-ffmpeg(29135): 28.80 fps,
    I/mobile-ffmpeg(29135): 29.08 tbr,
    I/mobile-ffmpeg(29135): 90k tbn,
    I/mobile-ffmpeg(29135): 180k tbc
    I/mobile-ffmpeg(29135):  (default)
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Metadata:
    I/mobile-ffmpeg(29135):       rotate          :
    I/mobile-ffmpeg(29135): 90
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):       creation_time   :
    I/mobile-ffmpeg(29135): 2020-06-17T18:26:09.000000Z
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):       handler_name    :
    I/mobile-ffmpeg(29135): VideoHandle
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Side data:
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135): displaymatrix: rotation of -90.00 degrees
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Stream #1:1
    I/mobile-ffmpeg(29135): (eng)
    I/mobile-ffmpeg(29135): : Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s
    I/mobile-ffmpeg(29135):  (default)
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):     Metadata:
    I/mobile-ffmpeg(29135):       creation_time   :
    I/mobile-ffmpeg(29135): 2020-06-17T18:26:09.000000Z
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):       handler_name    :
    I/mobile-ffmpeg(29135): SoundHandle
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135): Stream mapping:
    I/mobile-ffmpeg(29135):   Stream #0:0 (h264) -> concat:in0:v0
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):   Stream #1:0 (h264) -> concat:in1:v0
    I/mobile-ffmpeg(29135):
    I/mobile-ffmpeg(29135):   concat
    I/mobile-ffmpeg(29135):  -> Stream #0:0 (mpeg4)
    I/mobile-ffmpeg(29135): Press [q] to stop, [?] for help
    W/mobile-ffmpeg(29135): [graph 0 input from stream 0:0 @ 0xed087710] sws_param option is deprecated and ignored
    W/mobile-ffmpeg(29135): [graph 0 input from stream 1:0 @ 0xed086830] sws_param option is deprecated and ignored
    W/mobile-ffmpeg(29135): [mp4 @ 0xeccd8790] Frame rate very high for a muxer not efficiently supporting it.
    W/mobile-ffmpeg(29135): Please consider specifying a lower framerate, a different muxer or -vsync 2
    E/mobile-ffmpeg(29135): [mpeg4 @ 0xe68049d0] timebase 1/1000000 not supported by MPEG 4 standard, the maximum admitted value for the timebase denominator is 65535
    E/mobile-ffmpeg(29135): Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
    I/mobile-ffmpeg(29135): Conversion failed!
    D/flutter-ffmpeg(29135): FFmpeg exited with rc: 1
    I/flutter (29135): FFmpeg process exited with rc 1

回答1:


You probably need a slightly different filter:

-filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[out]" -map "[out]"

Actually, you can copy the two input files to your PC, and tune the 'real' ffmpeg parameters using the command line until the result satisfies you. Only after that, and on condition that the expected true input files will be with same characteristics, you can put these parameters into your dart code.

BTW, do you deliberately drop the audio stream here?




回答2:


This was the commandToExecute, which finally worked for me. Hope it helps anyone with a similar issue :)

'-y -i ${_storedVideoOne.path} -i ${_storedVideoTwo.path} -r 24000/1001 -filter_complex \'[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[out]\' -map \'[out]\' $outputPath'

I then still had to save the final output using this:

 GallerySaver.saveVideo(outputPath).then((_) {});


来源:https://stackoverflow.com/questions/62436443/concat-filter-error-initializing-output-stream

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!