Concat 过滤器:初始化输出流时出错
Concat filter: Error initializing output stream
这是以下问题的后续问题:
本质上,我正在尝试录制两个视频,合并它们,然后在图库中查看新视频。我目前在使用 flutter_ffmpeg 包时遇到了一些问题。
我将我的 Flutter 项目上传到 GitHub 此处:
https://github.com/IttaiBarkai/Flutter-Video-Merger
下面是我用来执行 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"));
}
这是执行 ffmpeg 时我的调试控制台上显示的输出:
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
您可能需要一个稍微不同的过滤器:
-filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[out]" -map "[out]"
实际上,您可以将这两个输入文件复制到您的PC,然后使用命令行调整'real' ffmpeg 参数,直到结果令您满意为止。只有在那之后,并且在预期的 true 输入文件具有相同特征的情况下,您可以将这些参数放入您的 dart 代码中。
顺便说一句,你是故意把音频流放在这里吗?
这就是 commandToExecute,它终于对我有用了。希望它能帮助任何遇到类似问题的人:)
'-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'
然后我仍然不得不使用这个保存最终输出:
GallerySaver.saveVideo(outputPath).then((_) {});
这是以下问题的后续问题:
本质上,我正在尝试录制两个视频,合并它们,然后在图库中查看新视频。我目前在使用 flutter_ffmpeg 包时遇到了一些问题。
我将我的 Flutter 项目上传到 GitHub 此处:
https://github.com/IttaiBarkai/Flutter-Video-Merger
下面是我用来执行 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"));
}
这是执行 ffmpeg 时我的调试控制台上显示的输出:
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
您可能需要一个稍微不同的过滤器:
-filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[out]" -map "[out]"
实际上,您可以将这两个输入文件复制到您的PC,然后使用命令行调整'real' ffmpeg 参数,直到结果令您满意为止。只有在那之后,并且在预期的 true 输入文件具有相同特征的情况下,您可以将这些参数放入您的 dart 代码中。
顺便说一句,你是故意把音频流放在这里吗?
这就是 commandToExecute,它终于对我有用了。希望它能帮助任何遇到类似问题的人:)
'-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'
然后我仍然不得不使用这个保存最终输出:
GallerySaver.saveVideo(outputPath).then((_) {});