Flutter_ffmpeg: должен быть указан как минимум один выходной файл - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь обрезать видео с помощью пакета Flutter_ffmpeg , используя -i $inputPath -filter:v "crop=80:60:200:100" -c $outputPath, но у меня появляется это сообщение об ошибке

Running FFmpeg with arguments: [-i, /data/user/0/com.timz/app_flutter/Movies/flutter_test/1584827688309.mp4, -filter:v, crop=80:60:200:100, -c, /data/user/0/com.timz/cache/output.mp4].
I/flutter (20728): ffmpeg version git-2020-01-25-fd11dd500
I/flutter (20728):  Copyright (c) 2000-2020 the FFmpeg developers
I/flutter (20728): 
I/flutter (20728):   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/flutter (20728):   configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android24-clang --cxx=aarch64-linux-android24-clang++ --target-os=android --enable-neon --enable-asm --enable-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 --disa
I/flutter (20728):   libavutil      56. 38.100 / 56. 38.100
I/flutter (20728):   libavcodec     58. 65.102 / 58. 65.102
I/flutter (20728):   libavformat    58. 35.101 / 58. 35.101
I/flutter (20728):   libavdevice    58.  9.103 / 58.  9.103
I/flutter (20728):   libavfilter     7. 70.101 /  7. 70.101
I/flutter (20728):   libswscale      5.  6.100 /  5.  6.100
I/flutter (20728):   libswresample   3.  6.100 /  3.  6.100
I/flutter (20728): Trailing option(s) found in the command: may be ignored.
D/flutter-ffmpeg(20728): FFmpeg exited with rc: 1
I/flutter (20728): Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/data/user/0/com.timz/app_flutter/Movies/flutter_test/1584827688309.mp4':
I/flutter (20728):   Metadata:
I/flutter (20728):     major_brand     : 
I/flutter (20728): mp42
I/flutter (20728): 
I/flutter (20728):     minor_version   : 
I/flutter (20728): 0
I/flutter (20728): 
I/flutter (20728):     compatible_brands: 
I/flutter (20728): isommp42
I/flutter (20728): 
I/flutter (20728):     creation_time   : 
I/flutter (20728): 2020-03-21T21:54:56.000000Z
I/flutter (20728): 
I/flutter (20728):     com.android.version: 
I/flutter (20728): 9
I/flutter (20728): 
I/flutter (20728):   Duration: 
I/flutter (20728): 00:00:07.17
I/flutter (20728): , start: 
I/flutter (20728): 0.000000
I/flutter (20728): , bitrate: 
I/flutter (20728): 3870 kb/s
I/flutter (20728): 
I/flutter (20728):     Stream #0:0
I/flutter (20728): (eng)
I/flutter (20728): : Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709), 720x480, 3854 kb/s
I/flutter (20728): , SAR 1:1 DAR 3:2
I/flutter (20728): , 
I/flutter (20728): 29.44 fps, 
I/flutter (20728): 29.83 tbr, 
I/flutter (20728): 90k tbn, 
I/flutter (20728): 180k tbc
I/flutter (20728):  (default)
I/flutter (20728): 
I/flutter (20728):     Metadata:
I/flutter (20728):       rotate          : 
I/flutter (20728): 270
I/flutter (20728): 
I/flutter (20728):       creation_time   : 
I/flutter (20728): 2020-03-21T21:54:56.000000Z
I/flutter (20728): 
I/flutter (20728):       handler_name    : 
I/flutter (20728): VideoHandle
I/flutter (20728): 
I/flutter (20728):     Side data:
I/flutter (20728):       
I/flutter (20728): displaymatrix: rotation of 90.00 degrees
I/flutter (20728): 
I/flutter (20728):     Stream #0:1
I/flutter (20728): (eng)
I/flutter (20728): : Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 12 kb/s
I/flutter (20728):  (default)
I/flutter (20728): 
I/flutter (20728):     Metadata:
I/flutter (20728):       creation_time   : 
I/flutter (20728): 2020-03-21T21:54:56.000000Z
I/flutter (20728): 
I/flutter (20728):       handler_name    : 
I/flutter (20728): SoundHandle
I/flutter (20728): 
I/flutter (20728): At least one output file must be specified

Я ломаю голову в течение последних двух дней, пожалуйста, поделитесь своими мыслями о том, что может быть не так.

1 Ответ

1 голос
/ 22 марта 2020

Опция -c требует значения, но у вас его нет.

Кроме того, вы должны использовать спецификатор потока с опцией -c, например, -c:v для видео и -c:a для аудио. Исключение составляют случаи, когда вы хотите скопировать поток всех типов потоков, но поскольку вы фильтруете, вы не можете этого сделать (фильтрация требует кодирования).

Пропустить его и полагаться на значение по умолчанию выбор:

-i $inputPath -filter:v "crop=80:60:200:100" $outputPath

Или добавить значения вручную:

-i $inputPath -filter:v "crop=80:60:200:100" -c:v libx264 -c:a copy $outputPath
...