Re[9]: Попинайте меня ещё раз с фрилансерами
От: so5team https://stiffstream.com
Дата: 16.10.23 19:26
Оценка:
Здравствуйте, cppguard, Вы писали:

S>>Или же что исходное условие было сформулировано так, что трактуется неоднозначно.


C>Нет, всё не так. Для примера выше должно быть три выходных файла. Разные отрезки логически между собой никак не связаны.


Так а как тогда должно интерпретироваться вот это условие:

Временной отрезок может включать конец одного исходного видео и начало другого. Программа должна корректно это обрабатывать.

?

Типа конец файла A.mp4 объединять с началом файла B.mp4 в один клип если это необходимо?

Или если достигнут конец файла A.mp4, то текущий клип нужно завершать, а начало файла B.mp4 сбрасывать уже в следующий клип?
Re[10]: Попинайте меня ещё раз с фрилансерами
От: cppguard  
Дата: 16.10.23 23:19
Оценка:
Здравствуйте, so5team, Вы писали:

S>Типа конец файла A.mp4 объединять с началом файла B.mp4 в один клип если это необходимо?


Именно так. А как ещё можно понять это требование? Есть регистратор, он непрерывно пишет порциями по N минут, нам интересно вытащить клип в на отрезке времени [a, b]. Очевидно, что этот отрезок может попадать на стык двух порций.
Re[9]: Попинайте меня ещё раз с фрилансерами
От: DiPaolo Россия  
Дата: 17.10.23 00:30
Оценка: +2
S>>Тем не менее, выбранная вами для работы moviepy делает именно это -- запускает бинарник ffmpeg и читает бинарные данные с его стандартного вывода (формирование командной строки, запуск, чтение).
C>Отлично, это непринципиально. Главное, что идёт правильное декодирование видео, а не просто вырезается кусок данных.

Еще как принципиально. Этот "нюанс" все меняет в корне дела. Более того, вы сами с упорством всем тут доказывали, что так как вы в итоге сделали — делать ни в коем случае нельзя. А потом: фиииии, вот дурачки, можно же было простым образом за два часа сделать. Ну так вам и предлагали с самого начала такое решение.

Патриот здравого смысла
Re[10]: Попинайте меня ещё раз с фрилансерами
От: cppguard  
Дата: 17.10.23 02:02
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>Еще как принципиально. Этот "нюанс" все меняет в корне дела. Более того, вы сами с упорством всем тут доказывали, что так как вы в итоге сделали — делать ни в коем случае нельзя. А потом: фиииии, вот дурачки, можно же было простым образом за два часа сделать. Ну так вам и предлагали с самого начала такое решение.


В ffmpeg есть ключик "-s" (кажется, лень проверять), который тупо копирует кусок видео по заданному временному отрезку. Не декодирует, а именно копирует. Я не знаю, зачем этот режим вообще добавили, но минус такого решения — если временной отрезок попадает между двух ключевых кадров, то кусок видео до ключевого кадра от начала вырезанного клипа будет "жёванным". И именно это решение находится на первой странице поиска гугла. Поэтому я предположил, что потенциальные исполнители перед тем, как сделать отклик, загуглять "ffmpeg extract segment", увидят вот этот хромой способ и подумают, что это лёгкие деньги. И хотел как-то донести, что меня этот способ не устраивает. Вероятно, правильно было бы таки расписать подробно, что такой ключ в программе есть, но пользоваться им нельзя. Так что да — с вашей стороны выглядит, словно я поменял ТЗ на ходу, с моей стороны — способ уберечься от проходимцев.
Re[11]: Попинайте меня ещё раз с фрилансерами
От: DiPaolo Россия  
Дата: 17.10.23 03:30
Оценка: +1
C>В ffmpeg есть ключик "-s" (кажется, лень проверять), который тупо копирует кусок видео по заданному временному отрезку. Не декодирует, а именно копирует. Я не знаю, зачем этот режим вообще добавили, но минус такого решения — если временной отрезок попадает между двух ключевых кадров, то кусок видео до ключевого кадра от начала вырезанного клипа будет "жёванным". И именно это решение находится на первой странице поиска гугла. Поэтому я предположил, что потенциальные исполнители перед тем, как сделать отклик, загуглять "ffmpeg extract segment", увидят вот этот хромой способ и подумают, что это лёгкие деньги. И хотел как-то донести, что меня этот способ не устраивает. Вероятно, правильно было бы таки расписать подробно, что такой ключ в программе есть, но пользоваться им нельзя. Так что да — с вашей стороны выглядит, словно я поменял ТЗ на ходу, с моей стороны — способ уберечься от проходимцев.



Все попереврали.

— параметр -ss все вырезает как надо:

The input will be parsed using keyframes, which is very fast. As of FFmpeg 2.1, when transcoding with ffmpeg (i.e. not stream copying), -ss is now also "frame-accurate" even when used as an input option.
...
This approach uses keyframes to seek until 00:22:30, and then seeks frame-by-frame until it reaches 00:23:00 (00:22:30 + 00:00:30)

(https://trac.ffmpeg.org/wiki/Seeking)

— именно этот параметр используется в вашем решении:
        if start_time != 0:
            offset = min(1, start_time)
            i_arg = [
                "-ss",
                "%.06f" % (start_time - offset),
                "-i",
                self.filename,
                "-ss",
                "%.06f" % offset,
            ]
        else:
            i_arg = ["-i", self.filename]

(https://github.com/Zulko/moviepy/blob/bc8d1a831d2d1f61abfdf1779e8df95d523947a5/moviepy/video/io/ffmpeg_reader.py#L85C1-L96C42)

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

Чтобы подобных казусов не было, рекомендую вам просто писать ЧТО вы хотите, а не КАК вам надо сделать. Ну просто не выежываться, а написать как клиент. А если уж сами все понимаете — ну так делайте сами и мозги никому не грейте.

– Степан, у гостя карета сломалась…
– Вижу, барин. Ось полетела, да спицы менять надо.
– Починить сможешь?
– За день сделаю.
– А за два? Степан глянул на барина, перевел взгляд на карету:
– Можно и за два.
– А за пять?. Степан задумчиво почесал в затылке:
– Трудновато, барин. Но ежели постараться, можно и за пять…
– А за десять дней? Степан аж крякнул:
– Ну, барин, тут тогда самому не справиться. Помощник нужен. Хомо сапиенс!

Патриот здравого смысла
Re[12]: Попинайте меня ещё раз с фрилансерами
От: aik Австралия  
Дата: 17.10.23 04:11
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>Все попереврали.

DP>- параметр -ss все вырезает как надо:

Кстати можно ещё и как то так — я поленился отладить, результат неверный, но идея такая что фильтрами можно наворотить что там ТС хотел:

ffmpeg -y -i PXL_20230611_011746852.mp4 \
 -filter_complex "[0:v]trim=start=5:end=10,setpts=PTS-STARTPTS,split[v1]; [0:v]trim=start=22:end=25,setpts=PTS-STARTPTS,split[v2]; [v1][v2]concat[vo]" \
 -map "[vo]" new.mp4


Но я был уверен что нужно без транскодинга (пример выше транскодит), если нужно просто вырезать кусок, то естественно хочется чтоб быстро работало %)
Re[11]: Попинайте меня ещё раз с фрилансерами
От: so5team https://stiffstream.com
Дата: 17.10.23 04:45
Оценка:
Здравствуйте, cppguard, Вы писали:

S>>Типа конец файла A.mp4 объединять с началом файла B.mp4 в один клип если это необходимо?


C>Именно так. А как ещё можно понять это требование?


Вам тут уже озвучили три интерпретации ваших слов:

— если под "конец одного исходного видео и начало другого" понимаются именно исходные файлы с регистратора, то:

a) корректным может быть обрезание клипа при окончании файла A.mp4 и начало нового клипа, куда будут записываться данные из начала B.mp4;
b) корректным может быть включение в клип окончания файла A.mp4 и начало файла B.mp4.

Некорректной же обработкой будет, например, продолжение клипа при окончании файла A.mp4, но "добивание" его пустотой (т.е. черный фон для видео и тишина для аудио).

— если под "конец одного исходного видео и начало другого" понимаются результирующие файлы-клипы (а так тоже можно воспринять ваши слова), то при наличии пересечений в отрезках формировать меньше клипов, объединяя пересекающиеся отрезки в один клип. Или даже делать больше клипов формируя их так, чтобы пересечений не было вообще.

C>Есть регистратор, он непрерывно пишет порциями по N минут, нам интересно вытащить клип в на отрезке времени [a, b]. Очевидно, что этот отрезок может попадать на стык двух порций.


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

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

И для меня загадка почему вместо фразы:

Временной отрезок может включать конец одного исходного видео и начало другого. Программа должна корректно это обрабатывать.

вы не написали что-то вроде:

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


Причем тут еще бы нужно озвучить поведение при:

— попадании такой ситуации на границу суток (нужно ли брать следующий файл из каталога с видео записями следующего дня);
— отсутствия следующего файла;
— ситуации, когда в следующем файле параметры видео/аудио не совпадают с текущим файлом (например, текущий файл был видео HD-качества и аудио 16bit/44.1kHz, следующий файл оказался с видео FullHD и аудио 24bit/48kHz). Скорее всего такого быть не должно, но автору нужно понимать граничные условия.
Re[12]: Попинайте меня ещё раз с фрилансерами
От: cppguard  
Дата: 17.10.23 22:26
Оценка: :)
Здравствуйте, DiPaolo, Вы писали:

DP>Все попереврали.

stream copying <- вот об этом я говорил. Это мне НЕ нужно было.

DP>Вы же за фидбэком сюда пришли. Вам уже несколько человек сказали, как ваше задание и поведение выглядит со стороны для других людей. Может уже стоит признать, что ваше задание было непонтяным для других, а не зарываться все глубже в отмазки? Выглядит смешно и непрофессионально.


Возможно. Но я не вижу, что я где-то отмазываюсь? От чего вообще тут можно отмазываться? Я никого не обвиняю, меня никто не обвиняет (кроме тупых набросов). Я задался целью выяснить, почему я с полпинка не могу найти фрилансеров. Считаю, что примерно выяснил, почему.

DP>Чтобы подобных казусов не было, рекомендую вам просто писать ЧТО вы хотите, а не КАК вам надо сделать. Ну просто не выежываться, а написать как клиент. А если уж сами все понимаете — ну так делайте сами и мозги никому не грейте.


Стоит попробовать.
Re[13]: Попинайте меня ещё раз с фрилансерами
От: IID Россия  
Дата: 19.10.23 06:23
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Я задался целью выяснить, почему я с полпинка не могу найти фрилансеров. Считаю, что примерно выяснил, почему.


Озвучьте же это знание!
kalsarikännit
Re[14]: Попинайте меня ещё раз с фрилансерами
От: cppguard  
Дата: 19.10.23 21:47
Оценка:
Здравствуйте, IID, Вы писали:

IID>Озвучьте же это знание!


В 2012-ом, когда я впервые вышел на фриланс, рынок был другим. Я сам выяснял, что нужно заказчику, и предлагал возможные варианты решений. Сейчас, чтобы не вылететь в трубу и не платить сотни тысяч, за простенький скрипт, заказчику требуется основательно подойти к описанию ТЗ. Но это только догадки. Вероятно, что на международном рынке фриланса всё так же можно за недорого найти исполнителя, который сам по словесному описанию составит ТЗ и быстро всё сделает, но для этого нужно мутить с виртуальной валютной картой. Пока что ChatGPT является приемлемой альтернативой.
Re[15]: Попинайте меня ещё раз с фрилансерами
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 20.10.23 14:54
Оценка: +1
Здравствуйте, cppguard, Вы писали:

C>В 2012-ом, когда я впервые вышел на фриланс, рынок был другим. Я сам выяснял, что нужно заказчику, и предлагал возможные варианты решений. Сейчас, чтобы не вылететь в трубу и не платить сотни тысяч, за простенький скрипт, заказчику требуется основательно подойти к описанию ТЗ. Но это только догадки. Вероятно, что на международном рынке фриланса всё так же можно за недорого найти исполнителя, который сам по словесному описанию составит ТЗ и быстро всё сделает, но для этого нужно мутить с виртуальной валютной картой. Пока что ChatGPT является приемлемой альтернативой.

Ничего ты так и не понял...
Sic luceat lux!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.