LINUX.ORG.RU

Посоветуйте как сжать видео без потери качества и оригинального разрешения

 


4

1

Я тут видеокурсов купил по одной теме (не программирование, не связано с IT и электроникой вообще), там ~120 гигабайт видео скачал в формате mp4:

file *.mp4: ISO Media, MP4 v2 [ISO 14496-14]
mediainfo говорит, что:
Format                                   : MPEG-4
Format profile                           : Base Media / Version 2
Codec ID                                 : mp42 (mp42/mp41/isom/avc1)
File size                                : 1.56 GiB
Duration                                 : 46 min 52 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 4 760 kb/s
Encoded date                             : UTC 2016-03-22 15:00:01
Tagged date                              : UTC 2016-03-22 15:00:01

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 46 min 52 s
Bit rate                                 : 4 500 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 29.970 (30000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.072
Stream size                              : 1.47 GiB (95%)
Writing library                          : x264 core 148 r11 a01e339
Encoding settings                        : cabac=1 / ref=4 / deblock=1:0:0 / analyse=0x3:0x113 / me=umh / subme=8 / 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=34 / lookahead_threads=5 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / stitchable=1 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=infinite / keyint_min=29 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=2pass / mbtree=1 / bitrate=4500 / ratetol=1.0 / qcomp=0.60 / qpmin=5 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / vbv_maxrate=4950 / vbv_bufsize=13500 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00
Encoded date                             : UTC 2016-03-22 15:00:01
Tagged date                              : UTC 2016-03-22 15:00:01
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 46 min 52 s
Bit rate mode                            : Variable
Bit rate                                 : 256 kb/s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 spf)
Compression mode                         : Lossy
Stream size                              : 85.8 MiB (5%)
Encoded date                             : UTC 2016-03-22 15:00:01
Tagged date                              : UTC 2016-03-22 15:00:01

Я предполагаю, что файлы сделаны большого размера умышленно, так сказать чтобы придать весу.

Какой ffmpeg командой посоветуете сжать видео без потери качества и не уменьшая оригинальное разрешение?

Спасибо.



Последнее исправление: slon (всего исправлений: 1)

Я предполагаю, что файлы сделаны большого размера умышленно, так сказать чтобы придать весу.

Нет

Bit rate                                 : 4 500 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Этого мало даже для 720p

MyLittlePony
()

Битрейт маленький, оно и так сильно пожато.

anonymous
()

без потери качества

xz, bzip2, etc

1080p, 4 760 kb/s

Да тут уже жать особо некуда. Можешь попробовать сделать переменный поток со средним значением в районе 3000 и два прохода, чтобы совсем вырвиглазно не было.

Можно еще звук пережать до 128 или даже 96 kbps с даунсемплингом до 44,1kHz, если там качество звука роли не играет. Но это крохи.

Radjah ★★★★★
()

Ясно ребята, всем спасибо, придется смириться.

slon
() автор топика
ffmpeg -i video.mp4 -c:v copy -c:a copy output.mp4

Судя по параметрам кодирования, железка была слабая и картинка не слишком качественная (даже совсем плоха). На такие параметры битрейт нужен раза в 3 выше. Чтобы можно было уменьшить битрейт без значительных потерь качества, тебе придётся найти оригинал или вероятно снимать заново на нормальную камеру.

anonymous
()

А тебе нужно там 1080p? Может в 720p пережать?

Можешь поиграть с параметрами и посмотреть будет ли качетсво удовлетворительным.

P.S.

не программирование, не связано с IT и электроникой вообще

Порно что ли?

Tanger ★★★★★
()

Ну чтобы качество оставалось тем же, то нужно использовать
-qscale:v 0

u0atgKIRznY5
()
Ответ на: комментарий от anonymous

перекодировать в h265

Можно на Youtube залить, в скрытые видео, чтоб вероятность бан словить была поменьше. Через пару недель будет пожато в VP9.

Ан нет, они и скрытые видео проверяют, оказывается.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)

libx264 или h264.

ffmpeg -i movie.mp4 -qscale:v 0 -c:v h264 -qscale:a 0 -c:a mp3 out.mkv
Переведёт без потери качества на другой кодек, если звук перевести на mp3, то размер станет меньше, но для mp3 максимум 320kbps можно выжать с опцией -qscale:a 0.

u0atgKIRznY5
()
Ответ на: комментарий от anonymous

картинка не слишком качественная (даже совсем плоха).

качество видео лучше себе сложно представить для FullHD, разве что такое же + 60 fps, так что вот так.

slon
() автор топика
Ответ на: комментарий от Radjah

x264 -pix_fmt yuv444p -qp 0 лосслесс тащемт.

anonymous
()
Ответ на: комментарий от u0atgKIRznY5

Транскодировать видео с неизвестными параметрами кодека, транскодировать звук из нормального формата дерьмовым кодеком. Какие ещё будут советы?

anonymous
()
Ответ на: комментарий от slon

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

anonymous
()
Ответ на: комментарий от anonymous

Ну если на видео размер не достаточно уменьшить будет, и захочется пойти дальше, то придётся со звуком что-то делать. Я написал же, что звук так максимум 320kbps, да и проверил, видео с mp3 меньше занимает чем видео с aac, и из примера, который он привёл

Bit rate                                 : 256 kb/s
Бит рейт меньше, максимально поддерживаемого для mp3. Качество то же, а с mp3 размер меньше.

u0atgKIRznY5
()
Ответ на: комментарий от u0atgKIRznY5

Ты забываешь, что mp3 для сравнимого по качеству звучания нужен больший битрейт. И что он гораздо хуже проявляет себя на низких битрейтах. И вообще во всём гораздо хуже. Кроме того, AAC в MP3 транскодировать ну просто очень плохая идея. А ещё не все контейнеры поддерживают mp3 для звука и на то есть причины, он же был предшественником aac по принципу работы, о чём может быть разговор?

anonymous
()
Ответ на: комментарий от anonymous

Ладно бы там AC3 vs AAC обсуждать... Но тут опять же достаточно однозначно: AC3 имеет смысл на высоких битрейтах и множестве каналов, AAC во всех остальных случаях.

anonymous
()

сжать видео без потери качества

Никак. Есть lossless-кодеки, но размер у тебя получится ещё больше. Причём очень намного. А при lossy2lossy кодировании потери качества будут всегда. Они могут быть незаметны глазу, это другой вопрос. Если устраивает с потерями, то:

ffmpeg  -i original.mkv -c:a copy -c:v libx264 -preset slow -crf 21 result.mkv

С параметром crf играйся. Чем он больше, тем выше получится качество и больше размер. Чем он меньше, тем меньше размер, но ниже качество. Где будет казаться, что «без потери», с тем и жми. Для проверки жми кусочек (-t 2:00 например). 21 — довольно разумное значение.

upd: НО! У тебя FullHD с битрейтом 4 500. Куда тебе ещё меньше? Ещё сильнее жать некуда.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)
Ответ на: комментарий от u0atgKIRznY5

ffmpeg -i movie.mp4 -qscale:v 0 -c:v h264 -qscale:a 0 -c:a mp3 out.mkv

файл размером 1.12 GB продолжительностью 00:34:11 уменьшил до 791.9 MB за 00:34:15.

Разницы по качеству картинки не вижу, но смущает 1:1 время видео и время затраченное на конвертирование, я так пару суток буду получается на всех ядрах его сжимать.

Я чего-то думал, что будет быстрее.

slon
() автор топика
Ответ на: комментарий от slon

Это была шутка юмора, ты же просил без потери качества. Вон пару постами выше

ffmpeg  -i original.mkv -c:a copy -c:v libx264 -preset slow -crf 21 result.mkv

только кодировать действительно долго будет, стоит ли оно того?

anonymous
()
Ответ на: комментарий от anonymous

кодировать действительно долго

-codec:v nvenc_h264 -b:v 800k -preset:v hq

anonymous
()
Ответ на: комментарий от slon

Такой уж процесс перевод кодека в кодек для меньшего размера без потери качества.

u0atgKIRznY5
()
Ответ на: комментарий от MyLittlePony

ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 23 -c:a copy output.mp4

файл размером 1.12 GB продолжительностью 00:34:11 уменьшил до 826.5 MB за 00:34:15.

(интересно, что другим выше способом за то же время секунда в секунду уменьшил до 791.9 MB)

slon
() автор топика
Ответ на: комментарий от Psych218

С параметром crf играйся. Чем он больше, тем выше получится качество и больше размер. Чем он меньше, тем меньше размер, но ниже качество.

Всё верно, только наоборот.

anonymous
()
Ответ на: комментарий от anonymous

Да, наоборот. Спасибо за уточнение. Думал одно, написал другое.

Psych218 ★★★★★
()
Ответ на: комментарий от Psych218

ffmpeg -i original.mkv -c:a copy -c:v libx264 -preset slow -crf 21 result.mkv

дало самый плохой результат, 1.12 GB сжало до 1.1 GB, вон там выше есть результаты до ~790 MB.

slon
() автор топика
Ответ на: комментарий от slon

ну так там crf 23. Качество ниже. Тебе только размер важен? На тогда тебе:

 ffmpeg -i original.mkv -c:a copy -c:v libx264 -preset slow -crf 28 result.mkv

читай не только код, но и то, что к нему написано. Увеличивать и уменьшать надо параметр -crf

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)
Ответ на: комментарий от slon

двупроходное кодирование с таргетированием на размер конечного файла

ffmpeg -y -i input -c:v libx264 -preset veryslow -b:v 2000k -pass 1 -c:a libfdk_aac -b:a copy -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset veryslow -b:v 2000k -pass 2 -c:a copy -b:a copy output.mp4

veryslow даёт меньший размер файла с лучшим качеством. Что-то мне кажется отыквится. Если нет, битрейт можно сделать ещё меньше.

anonymous
()
Ответ на: комментарий от u0atgKIRznY5

если звук перевести на mp3, то размер станет меньше

Из AAC? В MP3? Ты долбанулся?

annulen ★★★★★
()
27 ноября 2016 г.
Ответ на: комментарий от devl547

vp9 сильнее размазывает и хуже на динамичных сценах, даже vp8 лучше - пруф (обрати внимание на траву и падающее бревно). h265 показывает самые лучшие результаты.

mr_Heisenberg
()
Ответ на: комментарий от devl547

Кстати да, vp9 тогда был эксперементальным. А вот сейчас... Не могу найти свежих сравнений. Не подкинешь ссылку?

mr_Heisenberg
()
Ответ на: комментарий от slon

А видеокарта есть? Какая именно? А то я такой же результат на интеловстройке имею, и это на целероне-то... мобильном...

timdorohin ★★★★
()
Ответ на: комментарий от timdorohin

Тащемто в процессорах тоже quick sync и прочие.

anonymous
()
Ответ на: комментарий от slon

Бл*, назувается сасай... И чего это красные нихрена не реализовали для кодировки? Даже на швабодке нет поддержки, пичаль...

А чо за проц? не интель? там может быть quic sync...

timdorohin ★★★★
()
Ответ на: комментарий от timdorohin

И чего это красные нихрена не реализовали для кодировки?

Через gstreamer можно на VCE кодировать.

devl547 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.