Drehte Video mit ffmpg ab

1344
user2528012

Ich arbeite an Android-Anwendungen, die Videos mithilfe von ffmpg zuschneiden. Dies funktioniert gut für alle Videos, aber nicht für Videos, die mit der Telefonkamera aufgenommen wurden. Ich habe festgestellt, dass alle diese Arten von Videos den Parameter "Drehen" von mehr als 0 in Videostream-Metadaten haben. Hier ist der vollständige Befehl ffmpg

ffmpeg -y -i /storage/VID_20.3gp -vf crop=280:70:176:0 -c:a copy -threads 5 -strict experimental -preset veryslow /storage/VID_203.3gp 

Dies ist die Ausgabe des obigen Befehls

Fehler beim Öffnen des Encoders für Ausgabestrom # 0: 0 - möglicherweise falsche Parameter wie Bitrate, Rate, Breite oder Höhe

und dieser Link zur Ausgabe des ffmpeg-Berichts

Wenn ich versuche, die Codecs mit folgendem Befehl anzugeben

ffmpeg -y -i /storage/VID_20.3gp -codec:v x264 -vf crop=280:70:176:0 -c:a copy -threads 5 -strict experimental -preset veryslow /storage/VID_203.3gp 

Dann ändert sich der Fehler in Folgendes

[NULL @ 0x4115d960] Es wurde kein geeignetes Ausgabeformat für 'crop = 280: 70: 176: 0' gefunden. I: crop = 280: 70: 176: 0: Ungültiges Argument

und dieser Link zur Ausgabe des ffmpeg-Berichts

ffmpeg started on 2016-01-13 at 18:48:54 Report written to "ffmpeg-20160113-184854.log" Command line: /data/data/fnzstudios.com.videocrop/app_bin/ffmpeg -y -i /storage/sdcard0/DCIM/Camera/VID_20160113_101209.3gp "-codec:v x264" -vf "crop=280:70:176:0" -c:a copy -threads 5 -strict experimental -preset veryslow -report /storage/sdcard0/croppedvideos/VID_20160113_101209.3gp ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers built on Dec 22 2014 12:52:34 with gcc 4.6 20120106 (prerelease) configuration: --arch=arm --cpu=cortex-a8 --target-os=linux --enable-runtime-cpudetect --prefix=/data/data/info.guardianproject.ffmpeg/app_opt --enable-pic --disable-shared --enable-static --cross-prefix=/home/n8fr8/dev/android/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --sysroot=/home/n8fr8/dev/android/ndk/platforms/android-16/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 --enable-decoders --enable-encoders --enable-muxers --enable-demuxers --enable-parsers --enable-protocols --enable-filters --enable-avresample --enable-libfreetype --disable-indevs --enable-indev=lavfi --disable-outdevs --enable-hwaccels --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-network --enable-libx264 --enable-zlib libavutil 51. 54.100 / 51. 54.100 libavcodec 54. 23.100 / 54. 23.100 libavformat 54. 6.100 / 54. 6.100 libavdevice 54. 0.100 / 54. 0.100 libavfilter 2. 77.100 / 2. 77.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4211b3d0] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4211b3d0] ISO: File Type Major Brand: 3gp4 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4211b3d0] File position before avformat_find_stream_info() is 1384931 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4211b3d0] All info found rfps: 8.083333 0.010260 rfps: 8.166667 0.001840 rfps: 8.250000 0.000241 rfps: 8.250000 0.000241 rfps: 8.333333 0.005463 rfps: 8.333333 0.005463 rfps: 8.416667 0.017508 rfps: 16.333333 0.007358 rfps: 16.416667 0.000750 rfps: 16.416667 0.000750 rfps: 16.500000 0.000963 rfps: 16.500000 0.000963 rfps: 16.583333 0.007997 rfps: 16.583333 0.007997 rfps: 24.500000 0.016556 rfps: 24.583333 0.004937 rfps: 24.666667 0.000141 rfps: 24.666667 0.000141 rfps: 24.750000 0.002166 rfps: 24.750000 0.002166 rfps: 24.833333 0.011012 rfps: 32.750000 0.012804 rfps: 32.833333 0.002998 rfps: 32.833333 0.002998 rfps: 32.916667 0.000013 rfps: 32.916667 0.000013 rfps: 33.000000 0.003850 rfps: 33.083333 0.014509 rfps: 41.000000 0.009534 rfps: 41.000000 0.009534 rfps: 41.083333 0.001540 rfps: 41.083333 0.001540 rfps: 41.166667 0.000367 rfps: 41.166667 0.000367 rfps: 41.250000 0.006016 rfps: 41.333333 0.018486 rfps: 49.166667 0.019750 rfps: 49.250000 0.006746 rfps: 49.250000 0.006746 rfps: 49.333333 0.000563 rfps: 49.333333 0.000563 rfps: 49.416667 0.001202 rfps: 49.500000 0.008663 rfps: 57.416667 0.015630 rfps: 57.416667 0.015630 rfps: 57.500000 0.004438 rfps: 57.500000 0.004438 rfps: 57.583333 0.000068 rfps: 57.583333 0.000068 rfps: 57.666667 0.002519 rfps: 57.666667 0.002519 rfps: 57.750000 0.011791 rfps: 57.750000 0.011791 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4211b3d0] File position after avformat_find_stream_info() is 548036 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/sdcard0/DCIM/Camera/VID_20160113_101209.3gp': Metadata: major_brand : 3gp4 minor_version : 0 compatible_brands: isom3gp4 creation_time : 2016-01-13 05:12:09 Duration: 00:00:05.39, start: 0.000000, bitrate: 2052 kb/s Stream #0:0(eng), 21, 1/90000: Video: mpeg4 (Advanced Simple Profile) (mp4v / 0x7634706D), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 1935 kb/s, 8.21 fps, 32.92 tbr, 90k tbn, 300 tbc Metadata: rotate : 90 creation_time : 2016-01-13 05:12:09 handler_name : VideoHandle Stream #0:1(eng), 143, 1/48000: Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 127 kb/s Metadata: creation_time : 2016-01-13 05:12:09 handler_name : SoundHandle [NULL @ 0x421230a0] Unable to find a suitable output format for 'crop=280:70:176:0' crop=280:70:176:0: Invalid argument 

Jede Hilfe wird geschätzt.

2
Fügen Sie "-report" hinzu und starten Sie. Einfügen der generierten Logdatei. Gyan vor 8 Jahren 0
@ Mulvya hat meine Frage mit den Protokolldateien des Berichts aktualisiert user2528012 vor 8 Jahren 0

2 Antworten auf die Frage

1
Gyan

Wenn kein Ausgabevideocodec angegeben ist, wählt FFmpeg automatisch H.263 für 3GP-Container und

Gültige Größen sind 128x96, 176x144, 352x288, 704x576 und 1408x1152.

Verwenden Sie H.264

ffmpeg -y -i /storage/VID_20.3gp -c:v libx264 -vf crop=280:70:176:0 -c:a copy -threads 5 -strict experimental -preset veryslow /storage/VID_203.3gp 
Ich sehe, dass Sie den Codec auf den korrekten Wert aktualisiert haben, aber dieser Befehl erzeugt auch den gleichen Fehler. Dies scheint mir ein Problem mit der Video-Rotation zu sein. Ich werde versuchen, den Drehfilter anzuwenden, dann zuzuschneiden und die Ergebnisse zu sehen. user2528012 vor 8 Jahren 0
Ich habe es nicht gemerkt, aber wie LN darauf hinweist, ist Ihre Version viel zu alt. Aktualisieren Sie das zuerst. Gyan vor 8 Jahren 0
1
LordNeckbeard

Sie haben mehrere Probleme:

  • ffmpeg version 0.11.1ist absolut uralt und nicht unterstützt. Sie müssen ein Upgrade durchführen. Sie verschwenden Ihre (und unsere) Zeit damit, sie zu verwenden, und es kann Auswirkungen auf die Sicherheit haben.

  • Es ist kein Encoder genannt x264. Verwenden libx264.

  • Entfernen Sie die Anführungszeichen -codec:v.

  • Zuletzt ffmpegwird das Video automatisch gedreht und die Metadaten zum Drehen entfernt. Dies ist ein weiterer Grund für ein Upgrade.

  • Kürzlich ffmpeghat der AAC-Encoder wesentliche Verbesserungen erfahren.

  • Bitte nicht verwenden -report: Die erhöhte Ausführlichkeit ist in der Regel ärgerlicher als hilfreich. Geben Sie einfach die Standardkonsolenausgabe an.