Время, необходимое FFMPEG для кодирования видеофайла - PullRequest
0 голосов
/ 01 апреля 2020

Я недавно работал с FFMPEG, чтобы сделать некоторые манипуляции с видеофайлами, узнав о синтаксисе et c и нашел его очень полезным. Я ищу отзывы, хотя на скорость, необходимую для кодирования файла. Например, я запускаю следующую команду для видеофайла, длиной 1 час, с расширением .mov и размером 4 ГБ, и выполнение этой команды занимает чуть более 4 часов. Он производит файл размером 2,2 ГБ. Я использую его на ноутбуке с высокой скоростью c i7.

    ffmpeg -i "C:\MyInputFile.mov" -b:v 4500k -bufsize 4500k -r 50 -bsf:a aac_adtstoasc -vf scale=1920:1080 "C:\MyOutputFile.mp4"

Please see following the log created at the start of the encoding. I dont have the full log unless I let it run again for 4 hours!

    -i "C:\MyInputFile.mov" -b:v 4500k -bufsize 4500k -r 50 -bsf:a aac_adtstoasc -vf scale=1920:1080 "C:\MyOutputFile.mp4"
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20200122
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\MyInputFile.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2019-06-24T18:14:35.000000Z
    timecode        : 10:00:00:00
  Duration: 01:09:20.12, start: 0.000000, bitrate: 8092 kb/s
    Stream #0:0(eng): Video: mpeg4 (Advanced Simple Profile) (mp4v / 0x7634706D), yuv420p(pc, smpte170m/unknown/smpte170m), 1024x576 [SAR 1:1 DAR 16:9], 6553 kb/s, 25 fps, 25 tbr, 25k tbn, 1k tbc (default)
    Metadata:
      creation_time   : 2019-06-24T18:14:35.000000Z
      handler_name    : Apple Video Media Handler
      encoder         : MPEG-4 Video
    Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      creation_time   : 2019-06-24T18:14:36.000000Z
      handler_name    : Apple Sound Media Handler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2019-06-24T19:32:28.000000Z
      handler_name    : Time Code Media Handler
      timecode        : 10:00:00:00
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg4 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 000001d8655322c0] VBV maxrate unspecified, assuming CBR
[libx264 @ 000001d8655322c0] using SAR=1/1
[libx264 @ 000001d8655322c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000001d8655322c0] profile High, level 4.2, 4:2:0, 8-bit
[libx264 @ 000001d8655322c0] 264 - core 159 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1
chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=4500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=4500 vbv_bufsize=4500 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to ' C:\MyOutputFile.mp4':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    timecode        : 10:00:00:00
    encoder         : Lavf58.29.100
    Stream #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 4500 kb/s, 0.02 fps, 12800 tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2019-06-24T18:14:35.000000Z
      handler_name    : Apple Video Media Handler
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/4500000 buffer size: 4500000 vbv_delay: -1
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2019-06-24T18:14:36.000000Z
      handler_name    : Apple Sound Media Handler
      encoder         : Lavc58.54.100 aac
frame=  273 fps= 21 q=31.0 size=    2048kB time=00:00:05.44 bitrate=3084.1kbits/s dup=136 drop=0 speed=0.415x

Могу ли я внести какие-либо изменения в команду, чтобы закодировать ее за меньшее время?

1 Ответ

1 голос
/ 01 апреля 2020

Потоковое копирование

Мне нужно перезаписать его, чтобы программное обеспечение, которое у меня было, могло работать с ним - будет работать только с файлами mp4.

Ваше входное видео MPEG -4 видео. Аудио PCM. MP4 принимает видео в формате MPEG-4, поэтому вы можете потоковое копирование видео и только перекодировать аудио:

ffmpeg -i input.mov -c:v copy -c:a aac output.mp4

Если под "файлами mp4" вы подразумевали "видео H.264 "тогда, конечно, ваше программное обеспечение может не поддерживать видео MPEG-4, и вам придется перекодировать его в H.264.

Если вам необходимо перекодировать

  • Ваша команда использует кодировщик libx264 для вывода видео H.264. Используйте более быстрый libx264 -preset.
  • Не удваивайте частоту кадров, если вам не нужно. Удалить -r 50.
  • Повышение масштаба обычно не рекомендуется. Удалите -vf scale=1920:1080.
  • Не влияет на скорость, но удалите -bsf:a aac_adtstoasc, поскольку при необходимости оно будет применяться автоматически.
  • using cpu capabilities в вашем журнале не говорит none!, что хорошо.
  • Исследование аппаратного ускорения декодирования / фильтрации / кодирования . Эти кодировщики оптимизированы по скорости и могут быть быстрее, чем x264 для кодирования H.264, но они не будут соответствовать качеству x264 при той же скорости передачи данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...