LINUX.ORG.RU

MKV to TS, помощь за вознаграждение

 


0

2

добрый день.

кто может помочь? за небольшое вознаграждение.

есть 720p 800 Mb или 1080p 1400 Mb файл mkv , хочу перегнать в ts с таким же качеством и размером, но у меня не получается, размер всегда больше :(

использую ffmpeg на debian 10 убирал из команды битрейт, профиль high@, ref frames - 4 и все равно из 1.4 Гб получаются 2.4 Гб

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

Перемещено hobbit из general



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

Для начала, MKV — это контейнер. Кодек какой? Команда ffprobe про файл что говорит? И для чего нужен именно TS?

«Максимально приближённо» — это -c:v copy, но оно не для всех сочетаний кодеков и контейнеров работать будет.

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

кодек avc

ts нужен для videojs плеера

Video ID/String : 1

Format/String : AVC

Format/Info : Advanced Video Codec

Format_Profile : High@L4

Format_Settings : CABAC / 4 Ref Frames

Format_Settings_CABAC/String : Yes

Format_Settings_RefFrames/String : 4 frames

CodecID : V_MPEG4/ISO/AVC

Duration/String : 1 h 58 min

BitRate/String : 9 071 kb/s

BitRate_Nominal/String : 1 374 kb/s

Width/String : 1 920 pixels

Height/String : 1 040 pixels

DisplayAspectRatio/String : 1.85:1

FrameRate_Mode/String : Variable

FrameRate/String : 23.976 FPS

ColorSpace : YUV

ChromaSubsampling/String : 4:2:0

BitDepth/String : 8 bits

ScanType/String : Progressive

Bits-(Pixel*Frame) : 0.189

StreamSize/String : 7.50 GiB

Encoded_Library/String : x264 core 164

Encoded_Library_Settings : cabac=1 / ref=2 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=4 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=32 / lookahead_threads=8 / 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=1 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=20 / rc=2pass / mbtree=1 / bitrate=1374 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00

Language/String : English

Default/String : Yes

Forced/String : No

colour_range : Limited

colour_primaries : BT.709

transfer_characteristics : BT.709

matrix_coefficients : BT.709

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

Сомневаюсь что сработает. Ты хочешь перегнать AVC который MPEG-4 в MPEG-TS который MPEG-2. MPEG-4 жмёт сильнее чем MPEG-2 вот и разница в размерах. Вроде бы всё так и я ничего не путаю. Понижай частоту кадров и/или битрейт для сохранения размеров файлов и/или разрешение ещё снижай для TS.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Lirok

ts нужен для videojs плеера

Так может прям mp4 и отдавать? Проблемы судя по интеренту с MPEG-4 Part 2 / MPEG-4 Visual вот его не умеют хром и клоны, у тебя просто MPEG-4. А обычный MPEG-4 можно прям как есть отдавать. Опять же, вроде.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Lirok

Тебе выше объяснили. Ты хочешь одновременно сохранить размер и сохранить качество. А размер при одинаковом качестве у разных кодеков разный. Поэтому выбирай, что ты хочешь сохранить или откажись от перекодирования.

И осиль оформление кода/логов, под каждым комментарием, блин, есть ссылка на гайды по оформлению. Простыню читать тяжело.

Но я в твоей простыне вычитал:

Format/Info : Advanced Video Codec
...
CodecID : V_MPEG4/ISO/AVC

AVC, насколько я помню, это синоним H.264 (хотя на мои файлы с H.264 ffprobe выдаёт несколько другой комментарий). Это кодек с уже очень сильным сжатием, если что. Он как раз подходит для потокового вещания, правда, уязвим к помехам.

TS же, если это тот TS, про который мы с @LINUX-ORG-RU подумали, это Transport Stream. (Судя по тому, что пишут, прибит гвоздями к MPEG-2, который — см. выше, но этот пункт я сам не проверял.)

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

TS же, если это тот TS, про который мы с @LINUX-ORG-RU подумали, это Transport Stream. (Судя по тому, что пишут, прибит гвоздями к MPEG-2, который — см. выше, но этот пункт я сам не проверял.)

ты где-то прочитал неверную\устаревшую на десяток лет информацию, mpegts укладываются все mpeg кодеки и там есть место, чтобы пихнуть и кодеки не от mpeg если очень сильно захотеть, например opus

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

Ну и? Я попробовал подсунуть ему h.264 на вход, «особенность контейнера» составила где-то 7%. Явно не та разница, на которую ТС рассчитывает.

Так что да, насчёт прибитости TS к MPEG2 неправда (ну или ffmepg на это сквозь пальцы смотрит), но и геморроиться с перекодированием смысла нет.

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

проблема похоже в старом ffmpeg

Нет, проблема в том, что ты свои ключи ffmpeg не показал.

Для сохранения «качества И размера» (другими словами, для заворачивания с тем же кодеком) надо, в зависимости от версии ffmpeg, указывать ему -vcodec copy или -codec copy или вообще -c:v copy (со стабильностью у них Содом и Гоморра, да). В этом случае у тебя никак из 1.4 не получится 2.4 (ну если только аудиодорожка подгадит ещё, но для неё тоже можно принудительно кодек задать и в твоей простыне выше про аудио ничего не было).

P.S. Но да, разумных причин ставить ffmpeg из докера я не вижу, в любом нормальном дистрибутиве он есть в репах. Даже если он в репах старенький — твою задачу решит.

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

у и? Я попробовал подсунуть ему h.264 на вход, «особенность контейнера» составила где-то 7%. Явно не та разница, на которую ТС рассчитывает.

откуда такая уверенность, на что рассчитывет тс? и у меня например разница 3%

но и геморроиться с перекодированием смысла нет.

тут непонятно, что ты подразумеваешь про перекодированием

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

откуда такая уверенность, на что рассчитывет тс?

жирнее файлы получаются чем оригинал

все равно из 1.4 Гб получаются 2.4 Гб

Это явно не мои 7% и тем более не твои 3. Поэтому я ему и говорю, пусть свои ключи покажет.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от no-such-file

The most common browsers which do not support MP4 are found on Linux, where the user might need to install additional codec support, and in some cases won’t want to. You can supply an array of alternate sources. webm and/or ogv are useful as fallback, but neither are supported by all browsers that support MP4.

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

Нет, это не так. Мешаете всё в кучу, контейнеры и кодеки.

MPEG2-TS — такой же контейнер, как и MKV и MP4, не привязанный к кодеку. Например, блюрей-видео вполне себе кодируется в AVC, но использует M2TS в качестве контейнера.

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

Дурачина, если mp4 кодека нет, то и ts c h264 не будет работать. Вообще ничего не будет работать что использует этот кодек. Можно смело забить.

ps: @hobbit ты то чё триггеришься?

no-such-file ★★★★★
()
Ответ на: комментарий от Shadow

Да, с этим пунктом уже разобрались. MPEG TS не прибит к MPEG-2, но ТС совершенно зря наезжает на ffmpeg за распухание видео с 1.4 до 2.4 Гб. Поправка на перекодирование у меня составила 7%, у анонимуса 3%. Поэтому я предложил ТСу показать свои ключи FFMPEG, а ещё лучше явно задать ключ, запрещающий перекодирование, и привёл примеры, как он может выглядит. Жду ответа.

hobbit ★★★★★
()
Ответ на: комментарий от no-such-file

если mp4 кодека нет

обычно mp4 не называют кодеком, это контейнер, чаще нет кодеков типа h264 чем нет кода который запихает в mp4, можно считать, что он всегда есть

Можно смело забить.

можешь и забить, редхатовцы например любят отключить h264, а vp8/9 в webm вполне может работать, failback слышал слово такое?

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

MPEG2-TS — такой же контейнер, как и MKV и MP4, не привязанный к кодеку.

все эти контейнеры привязаны к своим подмножествам кодеков, чтобы вам веселее жилось, по разным причинам, чаще всего патентным

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

редхатовцы например любят отключить h264

Ну я в том удалённом комментарии рассказал что я думаю про таких любителей. В любом случае это для пользователя геморрой и он таки всё равно накатит все «неугодные» кодеки, или поставит адекватный браузер где всё из коробки. Нет смысла заморачиваться на тему «а что если смотрят на анально огороженной кофеварке». Тем более в контексте вопроса ТСа про смену контейнера (он не просил нормальные HLS или DASH).

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от anonymous

Дурачина

где вахта

Во-первых это оценочное суждение. Во-вторых ты не «конкретный участник дискуссии», а анонимус. Страдай.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от hobbit

а ещё лучше явно задать ключ, запрещающий перекодирование, и привёл примеры, как он может выглядит.

может быть какой-то специфичный кодек, который не заведется потом на iphone

Lirok
() автор топика
Ответ на: комментарий от no-such-file

ты то чё триггеришься?

Начать с того, что называть в форуме «дурачиной» незнакомого человека — дурноватый тон. А ты там ещё про «криворуких любителей» и «маргинальное говно» набросил. Информативного в удалённом комментарии была ровно треть.

hobbit ★★★★★
()

с таким же качеством и размером

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

С тем же качеством или максимально приближенно? Разница здесь принципиальная.

Чем сейчас сжато видео? Какой кодек ты хочешь использовать в итоге? MPEG-2?

Если ты жмёшь другим кодеком, то с тем же качеством не получится — при любом лосси-сжатии будут потери.

Если хочешь с тем же размером, но с потерей качества — просто жми с тем же битрейтом, что есть.

А контейнер вообще не важен. Это ты можешь туда-сюда сколько угодно переконвертировать без потерь и без значительного изменения размера.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)

Дружище, зачем тебе progressive в TS??? Изначально TS использовался для записи потоков с телевидения в интерлейсе. Ясное дело, h264 поток в .ts всегда весит больше, ведь этот формат содержит кучу всякой лишней инфы для вещания. В 2024 году он необходим только для интерлейса, вот интерлейс в MKV далеко не все хардварные старые плееры смогут прочитать, ибо создан MKV для прогрессива.

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

Ля, лорчик нынче ушел в ~2010 год, когда я возился с этими двумя форматами, т.к. было очень много видосиков в них, которые хотелось смотреть на тупеньких аппаратных и неперепрошивающихся плеерах (например предках смарттв), правда я там наоборот ts в mp4 и mkv перепаковывал. Там проблема в том, что ffmpeg вообще не очень хорошо дружит с TS форматом, наверное, чтоб пиратам блюрея было труднее (от какого-то уже не помню формата кадров, допустимого в ts там их 3 всего I B P вроде, ffmeg ломался и ему делалось очень плохо, потом это фиксили, но видимо косяки остались или у тс-а очень старая версия ffmpeg-а где всё именно так как он описывает). Потому в то время были очень живы проекты MKVTool/MKVToolNix и для перепаковки вообще делалось шаманство когда сначала одной тулзой (забыл какая, что-то там вроде tsdemuxer или m2tsdemuxer с весьма сомнительной лицензией от весьма сомнительных авторов тусящих на всяких нехороших пиратских сайтах, вроде торрентов) вытягивали сырые данные (видео+отдельные дорожки) и потом обратно сливали mkvmerge или mkvtoolnix-gui, при этом не портилось качество и не было рассинхрона видео и звука (ffmpeg даже с нужными ключами при которых видео конвертировалось выкидывал какой-то из видов кадров и получалась сильная рассинхронизация звука и видео). Но то было давно, сейчас достаточно взять свежую версию ffmpeg-а и сделать так как предлагает хоббит или анонимус.

peregrine ★★★★★
()
8 марта 2024 г.
Ответ на: комментарий от no-such-file

можно и mp4, но если использовать cdn по странам с кешированием. оно работать не будет. сомневаюсь, что кто то просмотрит видео с самого начала до самого конца.

и вообще тогда лучше fMP4, а не mp4. тем более fMP4 это единственный способ воспроизвести видео в HEVC через HLS.

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

да проблема как обычно, там где не ждешь))

программист для тестов изменил с veryslow на superfast и не вернул обратно. по этому и раздувало размеры https://trac.ffmpeg.org/wiki/Encode/H.264#a2.Chooseapresetandtune

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

оно работать не будет. сомневаюсь, что кто то просмотрит видео с самого начала до самого конца

При простом перекладывании из mp4 в ts будет тоже самое. Если ты хотел HLS стриминг, то надо было вытащить хер из рта чтобы нормально объяснить свои хотелки.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

не понимаю агрессии в свой адрес.

Да хотел и хочу HLS стриминг.

у нас тысячи файлов с разным расширением сейчас улетают в ts mkv to ts mp4 to ts avi to ts

а для чего мне еще ts в первом посте ? для чего ts используют? кроме стриминга

Lirok
() автор топика
Ответ на: комментарий от no-such-file

При простом перекладывании из mp4 в ts будет тоже самое.

не будет тоже самое я получу так же кодек avc/h.264

который заведется на ios, android, lg smart и т.д. то есть максимальный охват.

Lirok
() автор топика