LINUX.ORG.RU

ffmpeg на ARM-е orange pi вырезка по длительности не работает как надо.

 , ,


0

2

На одноплатнике вырезаю кусок видео h.264 из .mkv файла с ip камеры.

ffmpeg -ss 00:03:43 -t 00:05:00 -i lestnica.mkv -vcodec copy -acodec copy lestnica.mp4
Оно конвертит вырезая с указанной минуты(когда то вообще сначала, либо с хаотичной минуты) и не останавливается на оговоренной продолжительности. На интеле i7 всё чётко, НО!!! на интеле 60-80 fps, на ораньжпае 480-500, при том, что выходное качество одинаковое. В чём дело?

★★★

Ты вырезаешь фрагмент начиная с 03:43 и продолжительностью 0!?

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

ffmpeg -ss 3:43 -i lestnica.mkv -t 1:00 -c copy -avoid_negative_ts 1 lestnica.mp4

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

Я прошу тебя рассказать, в чём мой вариант(кроме косяка со временем, эт вбивая на ЛОРе я накосячил) неправилен и чем твой правильный.

И да, по твоему варику fps-ов вообще 700+

burato ★★★ ()

Я бы ещё посмотрел, какая версия ffmpeg стоит на одноплатнике и какая — на интеле. Мой внутренний Нострадамус шепчет, что это более существенно, чем собственно архитектура процессора :)

hobbit ★★★★★ ()

-ss и -to работают в любом месте, но после -i намного медленнее, наверное из-за декодирования. Не забывайте, что в режиме -c copy ffmpeg режет не точно, а с ближайшего ключевого кадра. Для покадровой точности без пересжатия воспользуйтесь videoredo tvsuite или solveigmm video splitter.

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

А я бы сказал что несущественно. Перепаковка контейнера в любой версии должна занимать проценцы ЦПУ и весь упор только в диск. Вопрос почему интел такой быстрый, а 500 кадров на арме это нормально.

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

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

Перепаковка контейнера в любой версии должна занимать проценцы ЦПУ

Кстати в интеле все 8 ядер на 100%, а в ораньж пае одно ядро на 30%.

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

А по поводу порядка -i, -t и -ss: я всегда делал как в мануале: сначала в любом случае нужно указать входной файл, т.е. -i, а разницы от порядка -t и -ss не замечал. Зато замечал, что если время указывать в виде минут:секунд, то можно огрести случайные косяки со временем, поэтому с некоторых пор всегда пересчитываю всё в секунды.

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

Но -*codec copy предполагает, что никакой перепаковки нет. И у арм нет никакой заточенности. Да, есть инструкции neon, которые в мультимедийных задачах немного эффективнее чем всякие sse на x86, но всё равно x86 намного быстрее на такт и по частотам, так что мой RPi3 при софтовом кодировании в 4 потока на 900Мгц примерно в 2 раза медленнее, чем двухядерный мобильный пеньтиум ~2010 года на ~1200Мгц. 32нм Амд А6 затыкает его в 4-5 раз при 1400Мгц, а насколько быстрее i7 я даже не представляю.

Но другое дело, если каким то странным образом на интеле была активирована перекодировка, тогда как апельсин только копирует поток. Это не нормально, перекодировка должна быть заказана явно. Но команда явно заказывает НЕ перекодировать!

И третья возможность: Перекодируют оба, но опять таки, каким то странным образом апельсин делает это на аппаратном энкодере. Но это тоже должно задаваться явно! В моём случае мне пришлось пересобрать ffmpeg и давать команды тира ffmpeg -i test.avi -acodec copy -vcodec h264_omx -b:v 5M -t mp4 test.mp4

З.Ы. А собственно чего гадать, если можно выложить полный вывод ffmpeg с обоих устройств и там можно всё увидеть.

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