LINUX.ORG.RU

Ответ на: комментарий от detes42325

Нет, мне нужно обмануть телек! Он не берёт 1920х1080 50Гц, поскольку он читает из меты: Частота кадров - Constant, но читает, если Variable и проигрывает.
720HD 50Гц берёт и проигрывает.
Поэтому цель - подменить в мете Constant на Variable.

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

Mpeg2 формат гнилой прошловековый!

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

Может как раз НЕ fixed нужно?

=0 сбрасывает флаг, так что эта операция делает как раз то, что требуется. Но она обрабатывает видеопоток. Возможно, у тебя телек больше верит метаданным контейнера.

В таком случае попробуй перегнать из mp4 в mkv. В метаданных mkv нет понятия fps вообще, так что mp4→mkv→mp4 по идее должен сбросить флаг в контейнере, если он там установлен.

ffmpeg -i in.mp4 -c copy tmp.mkv
ffmpeg -i tmp.mkv -c copy out.mp4
i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Не, я уже давно перепробовал все комбинации, бестолку!
Но недавно попался один поток, я его стал писать.
Если кладу в ts, телек не берёт, кладу в mkv или mp4 берёт. В чём же разница? Стал исследовать. МедиаИнфа даёт следущее:
В неработающем ts просто, частота кадров = 30.000 FPS.

В mkv:
variable
30.000 FPS

В mp4:
Frame rate mode : Variable
Frame rate : 30.000 FPS
Minimum frame rate : 25.000 FPS
Maximum frame rate : 50.000 FPS

Из-за цифры 50.000 FPS и появилась мысль, что телек можно обмануть. Но как ему подсунуть Variable в файл, где 50.000 FPS и Constant.

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

Не, я уже давно перепробовал все комбинации, бестолку!

У меня был под рукой MP4 файл, в котором mediainfo показывало constant frame rate. Перегнал его в mkv и обратно, и стало variable frame rate. Так что если этот способ не работает, возможно дело не в CFR/VFR.

Если кладу в ts, телек не берёт, кладу в mkv или mp4 берёт.

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

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

Ковырять прошивку телека? Ну это жесть! Невозможно!
А это возможно - попробуй

https://cloud.mail.ru/public/NXzo/48cPUfu2o

Получится, скинешь мне обратно правленый.

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

Не выходит каменный цветок.

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

Трюк с преобразованием в mkv и обратно в mp4 не даёт никакого результата. В файле два stts. Видимо, один для видео и один для аудио. По этому набору любой парсер довольно свободно определит, что частота постоянная.

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

Не выходит, говоришь, цветок? Ещё не вечер! Благодарю за попытку.
Давненько было... Решил проделать трюк - изменять экранный размер видео без его ре-кодирования, используя финт масштабирования. Телек умеет масштабировать, но не так как надо, да и не будешь под разные видео масштабировать сам телек. С десяток спецов мне твердили в разной форме, что без ре-кодирования нельзя изменить. Это были только похожие на спецов. Оказалось, что можно разные по размеру видео подогнать к нужному. Нашёл, что есть такая программа для ПК, которого у меня не было.
Действительно, если умеет МедиаИнфа читать мету, почему не сделать, чтобы она и писала мету? И делать её не надо. Кто пишет мету при кодировании? FFmpeg! Если он её пишет, значит и переписать может?
Взял как-то раз HEX редактор и залез им в видео-файл с целью удалить библиотеку кодироаания. Может не удалить, а хотябы она была не видна МедиаИнфе. Получилось легко. Конечно, разобраться где там данные о рамере - чёрт ногу сломит! Но найти где и изменить Constant на Variable реально! Конечно опытному прогеру. Эти, как и данные размера и аспекта - всего лишь руководство для видео-проигрывателя...

***Аудио для эксперимента можно было и выбросить.

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

Вот, прикрутил кусочек с кадрами другой длительности: https://cloud.mail.ru/public/vqFA/eb39bnvKG. Этот файл определяется как VFR.

Кто пишет мету при кодировании? FFmpeg! Если он её пишет, значит и переписать может?

Я выше объяснял, там всё сложнее. Некоторые свойства видеофайлов не записаны явно, они вычисляются. Как например, всегда можно посчитать контрольную сумму по алгоритму sha256, но довольно сложно изменить файл так, чтобы его контрольная сумма стала равной некому другому заданному значению. С VFR/CFR в контейнере MP4 всё не так нереально, как в случае с sha256. И я уже описал, как этот трюк можно провернуть.

Но найти где и изменить Constant на Variable реально!

Эм… нет. Это свойство вычисляется на основе информации о длительностях видеокадров по всему файлу.

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

К сожалению, не при каком расскладе телек не берёт, пишет «50Гц не поддерживается», почему-то не добавляя, что при 1920х1080. 1280х720 50Гц он прекрасно проигрывает.
Телек читает оригинальную частоту кадров:
Frame rate mode : Variable
Original frame rate : 50.000 FPS
Если бы было не Original frame rate, а просто Frame rate, тогда, думаю, телек взял бы.
Припоминаю эксперименты по изменению аспекта. Новый внесённый аспект значился в Медиаинфе, но была ниже строка аналогичная -Original aspect, и телек читал этот, а не внесённый.
Я бесспорно не спец, но определённо считаю, что мету пишет ffmpeg, он же её может и изменить.
Я часто пользуюсь живой ретрансляцией телеканалов с ре-кодированием, т.е. вживую меняю размер, частоту кадров с 50 на 25Гц, быает с деинтерлейсом.
Значит, в начале ретрансляции ffmpeg сразу вбивает в мету изменения, и телек эти изменения размера и прочего читает и берет в исполнение.

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

Original frame rate : 50.000 FPS

Значение «Original frame rate» достаётся из упакованного блока с данными. Наверняка есть какой-то простой способ достать эти данные, изменить значение и упаковать данные обратно, но я про него не знаю. Заниматься декодированием руками это уж слишком муторно. Есть шанс, что размер блока изменится, и нужно будет пересчитывать все остальные блоки.

мету пишет ffmpeg, он же её может и изменить

Первая часть верна (с оговорками), вторая может быть не верна. Я бы ожидал от FFmpeg создания на выходе согласованных файлов. Поэтому создавать согласованные файлы будет, скорее всего, просто, а вот делать какие-то странные правки, скорее всего, сложно. FFmpeg битком набит всякими фильтрами и встроенными утилитами, какие-то из которых могут подойти; но вот найти там нужные рычажки — тот ещё квест.

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

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

в пересчёте на потраченное на разбирательства время будет дешевле купить либо новый телек без заморочек, либо медиа-приставку к телеку

Вот. Средняя зарплата программиста на баше — 70 килоденег в год, что равно 70/2 ~= 35 денег в час. Вонючая приставка примерно столько и стоит.

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

У меня в рассмотренном вопросе острой проблемы нет. Задал его в надежде, что слишком трудного решения нет.
Поток(датский телеканал), фрагмент которого мы курочили, смотрю ре-кодируя вживую в 25Гц - и вся проблема. Понятно, что 50Гц и 25Гц существенная разница для динамичного, мелко-элементного изображения.
У меня телек - беспроводной монитор, благодаря ffmpeg'у, много кодирую, ретранслирую с правками и проч. Приходится делать много корректирующих дублей. Сделал корректирующую правку в ffmpeg'е - через 2-3 секунды очередная правка на большом экране. До 20-30 дублей порой приходится делать, особенно, когда меняешь звуковую дорожку. Ввести в музыкальный синхрон новую, не так уж и просто.
Беру с дюжину геоблокированных телеканалов - пользую VPN.(подопытный файл также с геоблокирофванного). Пользую потоки Mpeg-Dash. Вещатели телеканалов постепенно стали его использовать, пока наряду с HLS.
Так что, ffmpeg для меня незаменим! Ни о какой(пока, не исключаю) приставке и речи не может быть!
Менять телек рано. Оледы, пока горят!(остаточное изображение).
Кстати, тебе приходилось или уже пользуешь Mpeg-Dash потоки?
Мне удалось организовать, чтобы мой ffmpeg был собран и заработал с таким форматом. Но есть и проблемы, пока нерешаемые ввиду отсутствия опыта и невостребованности у спецов. Библиотека в ffmpeg'е, отвечающая за работу с Mpeg-Dash, кривая! Констатирую это точно. Есть пару проигрывателей, тестовых, которые с этими потоками работают исключительно хорошо. Их работа не основана на ffmpeg'е! Но мне нужен только ffmpeg!

xradio
() автор топика
Последнее исправление: xradio (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.