Как указать базовый профиль H264 с помощью FFmbc?

Я использую FFmbc (производный FFmpeg) для перекодирования некоторых видеофайлов в H264 (в оболочке mov).

Я хочу указать базовый профиль (чтобы уменьшить использование ЦП), но не могу понять, как это сделать. Кажется, нет простого варианта указать это - я понимаю, что профиль получен из любых параметров, которые я указал.

Однако большинство примеров предназначены для FFmpeg, и FFmbc их отвергает.

Предложение использовать "-flags2 +bpyramid+wpred+mixed_refs-dct8x8" дает ошибки:

[NULL @ 0x101093600] [Eval @ 0x7fff5fbfce20] Undefined constant or missing '(' in 'bpyramid'
[NULL @ 0x101093600] Unable to parse option value "bpyramid+wpred+mixed_refs-dct8x8"
[NULL @ 0x101093600] Error setting option flags2 to value +bpyramid+wpred+mixed_refs-dct8x8.

Что мне здесь не хватает?

Ответы (4)

Примечание. Это для недавнего FFmpeg, а не FFmbc, который не использует тот же синтаксис параметров (пока).

Вам нужно использовать -profile:vопцию, которая была введена в FFmpeg 0.9 (афаик) и теперь является стандартной в 1.0.

ffmpeg -i input.mp4 -c:v libx264 -preset fast -profile:v baseline out.mov

Почему? -profileиспользовался (и имел приоритет) для кодирования AAC. Это просто неоднозначно, поэтому вам нужен спецификатор потока :v.

это для ffmpeg, ffmbc еще не перешел на новый синтаксис стиля «-vprofile».
Ты прав. Когда я писал это, FFmpeg собирался все изменить, и все было немного запутанным. +1 вам.

-profile baselineкажется, работает для меня, используя libx264. Я использую предустановки libx264 — например, «slow» дает мне параметры, перечисленные ниже. есть быстрое, медленное, очень медленное и плацебо (может быть больше, не помню).

stib$ ffmbc -i test.mov -vcodec libx264 -preset slow -profile baseline -acodec libfaac -ab 96k -crf 19 test.mp4
...
[libx264 @ 0x101858c00] profile Constrained Baseline, level 3.1
[libx264 @ 0x101858c00] 264 - core 120 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=0 ref=5 deblock=1:0:0 analyse=0x1:0x111 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=crf mbtree=1 crf=19.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'test.mp4'

У меня также была эта проблема. Я удалил лишние символы пробела, присутствующие в файле пресета, и это сработало для меня.

Чтобы установить базовый профиль, используйте следующие параметры ffmpeg. Мобильные приложения, такие как Neighboors by Ring, используют базовый профиль.

ffmpeg -i in_video.mp4 -vcodec libx264 -acodec aac -b:a 256k -vf scale=1280:720 -profile:v baseline out_video.mp4