Обрізайте поворотне відео за допомогою ffmpg


2

Я працюю на додатку для Android, який обрізає відео за допомогою ffmpg. Це добре працює для всіх відео, але не для відео, записаних на камеру телефону, я помітив, що всі ці види відео мають параметр "обертання", більший за 0, у метаданих відеопотоку. Ось повна команда 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

Це вихід вищезгаданої команди

Помилка під час відкриття кодера для вихідного потоку № 0: 0 - можливо, неправильні параметри, такі як bit_rate, швидкість, ширина або висота

і це посилання на вихід звіту ffmpeg

Якщо я спробую вказати кодеки за допомогою наступної команди

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

Потім помилка змінюється на наступну

[NULL @ 0x4115d960] Не вдається знайти відповідний вихідний формат для 'crop = 280: 70: 176: 0' I: crop = 280: 70: 176: 0: Неправильний аргумент

і це посилання на вихід звіту ffmpeg

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

Будь-яка допомога буде вдячна.


Додайте -reportта запустіть. Вставити створений лог-файл.
Gyan

@Mulvya оновив моє запитання з журналами файлів
звітів

Відповіді:


1

Коли вихідний відеокодек не вказаний, FFmpeg автоматично вибирає H.263 для контейнера 3GP та

Дійсні розміри - 128х96, 176х144, 352х288, 704х576 та 1408х1152.

Використовуйте 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

Я бачу, що ви оновили кодек, щоб виправити значення, але ця команда також створює ту саму помилку. Ця дивлячись на мене виходить із відеоповоротом, я спробую застосувати фільтр обертання, потім обрізати та побачити результати.
користувач2528012

Я не помітив, але, як зазначив LN, ваша версія занадто стара. Оновіть це спочатку.
Gyan

1

У вас є кілька проблем:

  • ffmpeg version 0.11.1абсолютно давній і непідтримуваний. Вам потрібно оновити. Ви витрачаєте свій (і наш) час, намагаючись його використовувати, і можливі наслідки для його безпеки.

  • Кодер не названий x264. Використовуйте libx264.

  • Видаліть цитати навколо -codec:v.

  • Останні ffmpegавтоматично обертатимуть відео та видалять метадані обертання, тож це ще одна причина для оновлення.

  • Останні ffmpegмають значні вдосконалення кодера AAC.

  • Не використовуйте -report: підвищена багатослівність зазвичай більше дратує, ніж корисна. Просто надайте вихідний консольний вихід.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.