Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: audio file for avconv  (Прочитано 5477 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
audio file for avconv
« : 24 Декабря 2013, 09:03:53 »
Здравствуйте!

У меня скрипт с помощью avconv строит видеофайл из несжатого потока,
получаемого от jpeg2yuv и сейчас я пытаюсь добавить звук из файла.
Это raw-файл, без заголовка, там просто отсчёты с частотой 8000Гц, один канал, 8 бит на отсчёт.
aplay его проигрывает командой "aplay -f U8 -r 8000 <file>".
Я пытаюсь добавить его в строках 3-й и 5-й в нижеприведённой команде
/usr/bin/jpeg2yuv -v 2 -f 16 -j ${fpath}"/"%010d.jpg -b $vskip  -n $vshow \
-I p -L 0 -R 0 2>/dev/null | /usr/bin/avconv -v debug \
-acodec pcm_u8  -ar 8000 -ac 1 -sample_fmt u8 -i ${fflnm}.raw \
-i /dev/stdin -r 16 \
-acodec adpcm_ms -ar 8000 -ac 1 -sample_fmt u8 \
-qmin $qmin -qmax $qmax -vcodec $vcod -pre $pres -f avi -b $btrt -minrate $btrt \
-maxrate $btrt -bufsize 2048k ${fflnm} > jpg2avi.log 2>&1
они обе начинаются с "acodec"
Но получаю сообщение
Invalid data found when proccessing input
В чём причина и какие опции надо указать, чтобы aconv обработала этот raw-файл?

Она и сама может читать jpg, но делает это плохо, пропускает больше трети,
а yuv2lav из цветного видеопотока строит чёрно-белый и с какими-то цветными разводами
в форме контуров изображённого предмета.
Пётр.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: audio file for avconv
« Ответ #1 : 24 Декабря 2013, 15:15:32 »
Invalid data found when proccessing input = Неверные данные, установленные при входном процессинге...
Либо неверно заданные параметры настройки кодирования, либо неподдерживаемые форматы, либо битый файл...
Хотя, я честно говоря, - не совсем понял что именно и как вы хотите? :) ... И скрипт я этот не понял - цель его, назначение и синтаксис...

И не понятен этот синтаксис: pcm_u8  -ar 8000 -sample_fmt u8 ??? - может так? - pcm_s8le -ar 8000 -sample_fmt u8
Наберите так же программу с ключами -decoders -encoders -sample_fmts, чтобы узнать поддерживается ли в списке всё установленное вами?

-v 2 - вы точно уверены что есть такой ключ?
« Последнее редактирование: 24 Декабря 2013, 15:35:55 от archiver »

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: audio file for avconv
« Ответ #2 : 25 Декабря 2013, 09:09:46 »
archiver,
Благодарю за ответ.
Файл не битый, но оказалось, что для avconv надо, чтобы он имел заголовок, как у wav-файла.
Я добавил его в начало, после этого параметры входного аудио-файла avconv стала брать из него.
От порядка опций результат работы avconv действительно зависит, я это замечал и раньше.
В последней попытке я вообще не указывал никаких опций для аудио, ни для входа, ни для выхода,
но avi-файл не создался, вроде бы именно из-за неправильного порядка аргументов для avconv.

Мне надо добавить звук в выходной avi-файл.
Да, у jpeg2yuv есть такой ключ.

Пользователь решил продолжить мысль 25 Декабря 2013, 10:12:04:
Вот какая команда используется сейчас
/usr/bin/jpeg2yuv -v 2 -f 16 -j ${fpath}"/"%010d.jpg -b $vskip  -n $vshow \
-I p -L 0 -R 0 2>/dev/null | /usr/bin/avconv -v debug \
-i ${fflnm}.raw \
-i /dev/stdin -r 16 \
-sample_fmt s16 \
-qmin $qmin -qmax $qmax -vcodec $vcod -pre $pres -f avi -b $btrt -minrate $btrt \
-maxrate $btrt -bufsize 2048k ${fflnm} > jpg2avi.log 2>&1
avi-файл не строится, вот соообщения:
(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 25 Декабря 2013, 13:29:56:
Сейчас я пытаюсь добавить звук к уже существующему avi-файлу, тоже пока плохо получается,
тоже сообщения об ошибках вида
err{or,}_recognition separate: 1; 1
Я пробовал смотреть в Интернете, они там есть, в т.ч. и здесь.

Плохо получается в том смысле, что звук не синхронизирован с видео. Оба входных файла по 20 секунд.
Если указываю кодек для выходного файла 8-разрядный, звук идёт 6 секунд, если 16-разрядный - 12,
24-разрядный - 18, 32-разрядный - 25, при этом видео после 20-ти секунд останавливается,
а звук продолжается.
« Последнее редактирование: 25 Декабря 2013, 13:29:56 от Peter_I »
Пётр.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: audio file for avconv
« Ответ #3 : 25 Декабря 2013, 14:37:58 »
Peter_I,
Смотрите здесь: Основные принципы кодирования в FFmpeg
И здесь: Мультиплексация-Демультиплексация средствами FFmpeg
Для мультиплексации желательно указывать карты потоков...

Обратите внимание на эти ключи:
-r 16
-sample_fmt s16

-r 16 - это скорость передачи кадров в секнду для видео... частота сэмплинга для аудио -ar, - может влиять на скорость проигрывания если стоит на входе... если вы хотите изенить сэмл-частоту звука путём конвертации то это выходной ключ -ar (audio rate: 48000, 44100, 32000, 22050 и т.д.)
-sample_fmt s16 - вам точно нужна эта опция? без неё ни как? :) Ибо обычно, что бы откодировать файл в формате рав в определённую частоту, именно эта опция не требуется:
-acodec pcm_s16le -ac 2 -ar 48000И, - она тоже может влиять на скорость воспроизведения(передачи) данных, ибо меняет в потоке число сэмплов в секунду...

Так же:
Stream #1.0, 3, 1/16: Video: rawvideo, yuv420p, 1280x1024, 1/16, PAR 1:1 DAR 5:4, 16 fps, 16 tbr, 16 tbn, 16 tbc:
Option preset not found=опция предустановки не найдена... Возможно, если вы кодируете без измененй то надо бы установить -vcodec copy в противном случае программа будет кодировать как ей вздумается, а не как вам надо...
« Последнее редактирование: 25 Декабря 2013, 21:42:49 от archiver »

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: audio file for avconv
« Ответ #4 : 25 Декабря 2013, 15:38:18 »
Ещё раз благодарю за советы, буду иметь в виду.
Пока что мне удалось правильно добавить звук в уже существующий avi-файл,
теперь звук идёт столько жеб сколько видео. это делается командой
/usr/bin/avconv -v debug -i ${fflnm}.wav -i ${fflnm}.avi \
-c:1 copy  \
-map 0,1 -map 1 \
${fflnm}_s.avi > avi2avi.log 2>&1
Т.е. из name.avi и name.wav создаётся name_s.avi со звуком.
Посмотрю, не удастся ли добавить звук при создании name.avi.
Пётр.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: audio file for avconv
« Ответ #5 : 13 Января 2014, 23:42:16 »
При создании avi звук добавить не сумел, но сейчас возникла неприятность
в связи с исчезновением avconv при установке kdenlive и обновлении версий
libav-tools и ffmpeg, она теперь является ссыклой на ffmpeg.
Это не Ubuntu, но Debian based система, потому вопрос может быть интересен и здесь.

У avconv было много preset'ов, я использовал libx264-ultrafast.
У ffmpeg preset'ов меньше и подобного нет, а без него, по моему
впечатлению, на том же видеопотоке и тех же других опциях ffmpeg
работает в разы медленнее.
При этом в том preset'е опции не задавались, в отличие от preset'ов ffmpeg.
Не подскажете ли, что можно задать для ускорения работы ffmpeg?
Пётр.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: audio file for avconv
« Ответ #6 : 14 Января 2014, 07:53:49 »
Peter_I,
Я дико извиняюсь, но я совсем не понимаю суть вашего геммороя... Зачем вам вообще нужен весь этот гемморой с пресетами, либавами и прочей чепухой, ограничивающей ваши способности и познания?...

Вам всего лишь надо изучить поподробней эту статью https://help.ubuntu.ru/wiki/ffmpeg и сопутствующие ссылки находящиеся в ней + приноровиться в экпериментах на каком нибудь куске видео в одну минуту, в котором содержатся все типы сцен - от статичных до динамичных + со смешанным и сложным движением, - всего лишь...
И после этого вы сможете сами себе писать аюсолютно любые пресеты, практически для всех ньюансов ваших мультимедиа нужд...

Настоятельно рекомендую!!! - не мучайте резинового кота за хвост - изучайте https://help.ubuntu.ru/wiki/ffmpeg -и- http://ffmpeg.org - а с возникшими по ходу вопросами стучитесь сюда, по возможности ответим...

И, для того что бы создать подобие пресета libx264-ultrafast для FFmpeg, не плохо было бы знать его содержание для начала...

При этом в том preset'е опции не задавались, в отличие от preset'ов ffmpeg.
Это мистика... Пресеты и командные строки для кодировщиков не работают без опций - или делают это по умолчанию в очень низком качестве :)

Не подскажете ли, что можно задать для ускорения работы ffmpeg?
FFmpeg, в общих чертах, - не нуждается в ускорении, как таковом :) Но если вы всё же хотите попробовать, то это описано здесь: Основные и дополнительные ключи параметров FFmpeg
Т.е. мы опять в плотную подходим к тому, что вам надо поизачать эту статью, прежде чем...

По вопросу о КДЕенлайв - рабоатать с видеообработакой надо в рав-формате или лосслесс формате, а паковать в компакт форму уже в заключительной стадии, достигнув желаемых результатов... И, становится непонятно - какое отношение к КДЕинлайв имеют пресеты FFmpeg и Libav???
« Последнее редактирование: 14 Января 2014, 08:31:06 от archiver »

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: audio file for avconv
« Ответ #7 : 14 Января 2014, 09:38:49 »
archiver,
Благодарю за быстрый и подробный ответ.
Буду изучать приведённые Вами статьи.

В том preset'е, которого сейчас нет, только одна строка -
preset=ultrafast
а в preset'ах от ffmpeg действительно наборы опций.
Использовалась команда
qmin=6
qmax=6
btrt=4500k
vcod=libx264
pres=libx264-ultrafast

/usr/bin/jpeg2yuv -v 2 -f 16 -j ${fpath}"/"%010d.jpg -b $vskip  -n $vshow \
-I p -L 0 -R 0 2>/dev/null | /usr/bin/avconv -v debug \
-i /dev/stdin -r 16 -qmin $qmin -qmax $qmax -vcodec $vcod -pre $pres \
-f avi -b:v $btrt -minrate $btrt \
-maxrate $btrt -bufsize 2048k ${fflnm}_v.avi > jpg2avi.log 2>&1
Сейчас она же, но без "-pre $pres" и avconv является ссылкой на ffmpeg.
jpeg2yuv создаёт несжатый поток из jpg, а ffmpeg его сжимает. Размер получающегося avi-файла
такой же, как был с avconv.
Возможно, я ошибаюсь, говоря, что ffmpeg сейчас работает медленнее, чем avconv с libx264-ultrafast,
но по субъективному ощущению это так. Я долго ждал, когда она закончит строить avi-файл на 20 секунд
и даже подумал, что программа зависла.

С kdenlive собираюсь работать не я, а он тут при том, что при его установке установились
132 пакета общим размером 114MB и обновились libav-tools и ffmpeg.
Были версии 6:0.8.3-1, а стали 8:1.0.8-dmo1.


Пользователь решил продолжить мысль 14 Января 2014, 11:21:36:
Сейчас проверил - действительно стало уходить больше времени на кодирование.
Видеофайл в 20 секунд этой командой строится 50 секунд, avconv с ultrafast делала это в разы быстрее.
jpeg2yuv несжатый файл записывает на диск за 5 секунд, это если не вызывать ffmpeg.
Там 16 кадров в секунду, т.е. обрабатывается 320 jpg, 1280x1024.

Пользователь решил продолжить мысль 14 Января 2014, 15:48:12:
Я нашёл набор preset'ов для ffmpeg на https://github.com/joeyblake/FFmpeg-Presets
сейчас буду пробовать. Правда, на другом сайте человек говорил, что с ultrafast получается плохо,
а с superfast уже нормально, но я на своих jpg не заметил, чтобы с avconv и ultrafast было плохо,
но там сами jpg были нерезкими.

Пользователь решил продолжить мысль 14 Января 2014, 17:28:35:
Почему-то ffpmeg не может подключить preset, пишет, что не может быть открыт,
в т.ч. и тот, который был в пакете с ней. Наверное, это чьи-то козни.
« Последнее редактирование: 14 Января 2014, 17:28:35 от Peter_I »
Пётр.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: audio file for avconv
« Ответ #8 : 15 Января 2014, 00:33:36 »
Сейчас она же, но без "-pre $pres" и avconv является ссылкой на ffmpeg.
Переведите пожалуйста это на доступный язык...

jpeg2yuv создаёт несжатый поток из jpg, а ffmpeg его сжимает.
Сделайте так, что бы FFmpeg его не сжимал - опциями и настойками... Об этом кратко и внятно написано тут: Основные и дополнительные ключи параметров FFmpeg

Возможно, я ошибаюсь, говоря, что ffmpeg сейчас работает медленнее, чем avconv с libx264-ultrafast,
Кнечно ошибаетесь, сравния программу FFmpeg с *avconv с libx264-ultrafast*... В первом случае это просто команда ffmpeg, а во втором случае это команда libav с пресетом libx264-ultrafast. И это уже не столь субъективно, сколь объективно :)

обновились libav-tools и ffmpeg.
Были версии 6:0.8.3-1, а стали 8:1.0.8-dmo1.
FFmpeg не может обновиться при установке kdenlive он не имеет к нему отношения... А вот libav-tools очень даже вероятно, ибо не имеет отношеня к FFmpeg, но имеет отношение к Libav :)
Подробнее об этом сказано в этой главе: Установка и компиляция FFmpeg на Ubuntu Где последняяверсия FFmpeg названа как FFmpeg 2.1.1 "Fourier, что в ощем далековато от версии 0.8 ;)
Т.е. мы опять в плотную подходим к тому, что вам надо поизучать эту статью, прежде чем...

Наверное, это чьи-то козни.
Да, совершенно с вами согласен, - видимо это козни белобилетников из программы по трудоустройству душевно- и психически- больных "талантов" в Каноникл, Либав и прочих шарашках ;D
На подобные глупости вряд ли кто ещё сподобится, из более-менее здравого контенгента ;)

А по факту - *Nix уже достаточно давно признан "религией" шизофреников, - в официальных кругах и даже среди спонсоров этих программ для душевно больного и малодееспособного населения этой больной планеты :coolsmiley:
Активным подтверждением этому является мировой срач между FFmpeg и Libav и, судебное шутовское разбирательство между SCO и IBM, Novell...

Почитайте на досуге - истинный цирк уродцев ;D
« Последнее редактирование: 15 Января 2014, 01:33:51 от archiver »

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: audio file for avconv
« Ответ #9 : 15 Января 2014, 09:24:36 »
Благодарю за ответ, видно, что Вы - высококвалифицированный специалист,
наверное, не ниже, чем начальник отдела.

Просто из приведённой команды убрано "-pre $pres", а /usr/bin/avconv является символьной ссылкой на ffmpeg.
Не понял совета - мне именно и надо сжать выход jpeg2yuv и получить видеофайл приемлемого размера.
Если уж по какой-то причине ffmpeg не может открыть preset, я просто вставлю его содержимое в команду.
У меня был сохранён вывод "dpkg -l" до установки kdenlive и сделан после, изменились версии
и libav-tools и ffmpeg. У обоих пакетов они одинаковые и у обоих изменились.
Я посмотрел приведённые Вами ранеее статьи, очень содержательно. Но компилировать ffmpeg не собираюсь,
думаю, что меня устроит и эта версия.

А вот во всех preset'ах qmin=10, а qmax=51, почему так одинаково?
Кажется, я встречал совет, что для хорошего качества надо 6-8, но при этом размер
видеофайла увеличивается раза в три.

Пользователь решил продолжить мысль 15 Января 2014, 12:26:50:
Версия ffmpeg 8:1.0.8-dmo1, я не знаю, что означает "6:" или "8:", но версия 1.0.8.
Возникла ещё одна трудность с передачей ffmpeg опций для x264. x264 тоже установил,
чтобы посмотреть "x264 --fullhelp". В "man ffmpeg" говорится, что ей можно передавать
любые опции x264 через конструкцию "-x264opts list", где list - это список опций в форме
key=value, разделённых двоеточием. Это работает, но у x264 есть опция "--profile <name>",
где name м.б., например, baseline, а также опция "--preset <name>", где name м.б., например,
veryast. Не удаётся передать таким образом profile, я пробовал несколько вариантов формирования
этой строки. Это вообще возможно ли и как, если да?

Ещё одна трудность - некоторых опций, используемых в найдённых preset'ах, я не нахожу в ffmpeg
и в x264. Например, некоторых опций, назначаемых для flags2. В "man ffmpeg" flags2 имеет значения
в форме названий наборов параметров, а некоторые из этих опций есть у x264.

Пользователь решил продолжить мысль 15 Января 2014, 16:21:54:
Отчасти я разобрался в нужном мне preset'е, libx264-veryfast. Две опции - wpred и fastskip -
у меня не поддерживаются, а directpred называется иначе. Также у меня не поддерживается опция aq_mode,
используемая в ultrafast. Кроме того, то, что в preset'е указано в flags2, я передаю через
"-x264opts <list>", а сам flags2 из preset'а убрал.
Оказалось, что в команде должна быть опцией "-vpre <preset_name>",
а с "-pre" ffmpeg пишет, что не может открыть preset.
С veryfast ffmpeg построила avi-файл на 20 секунд размером 11127K за 13 секунд,
а с ultrafst размер файла 11037K - 11066K и создаётся за 8 секунд. Качество ещё не сравнивал.
« Последнее редактирование: 15 Января 2014, 16:34:20 от Peter_I »
Пётр.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: audio file for avconv
« Ответ #10 : 15 Января 2014, 18:22:50 »
Благодарю за ответ, видно, что Вы - высококвалифицированный специалист,
наверное, не ниже, чем начальник отдела.
Упаси меня Боже! - начальник, тем более отдела или даже раздела - это должность приемущественно для быдла, - в поколении и с улицы ;D
А вам надо поизучать эту статью: https://help.ubuntu.ru/wiki/ffmpeg

У меня был сохранён вывод "dpkg -l" до установки kdenlive и сделан после, изменились версии
и libav-tools и ffmpeg. У обоих пакетов они одинаковые и у обоих изменились.
FFmpeg не может обновиться при установке kdenlive он не имеет к нему отношения... А вот libav-tools очень даже вероятно, ибо не имеет отношеня к FFmpeg, но имеет отношение к Libav...
Подробнее об этом сказано в этой главе: Установка и компиляция FFmpeg на Ubuntu, где последняя версия FFmpeg названа как FFmpeg 2.1.1 "Fourier, что в общем далековато от версии 0.8 ;)
Т.е. мы опять в плотную подходим к тому, что вам надо поизучать эту статью, прежде чем...
« Последнее редактирование: 15 Января 2014, 18:38:27 от archiver »

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: audio file for avconv
« Ответ #11 : 15 Января 2014, 21:37:47 »
У меня подклкючены репозитарии Debian Wheezy и deb-multimedia,
это был сделано ещё раньше для установки mjpegtools.
libav-tools и ffmpeg должны быть из deb-multimedia,
т.к. в Debian Wheezy их версии ниже.
Раз уж я разобрался с preset'ами благодаря Вашим ссылкам,
то этим и удовлетворюсь, так что благодарю за помощь.

В preset'ах есть опциа flags2, но в "man ffmpeg" оан имеет
одно из нескольких значений, а сейчас всё, что в ней указано,
надо передавать как опции x264 через -x264opts.
Пётр.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: audio file for avconv
« Ответ #12 : 16 Января 2014, 01:31:21 »
libav-tools и ffmpeg должны быть из deb-multimedia,

А если ещё точнее, то:
libav-tools должно быть отсюда: http://libav.org/
FFmpeg - должен быть осюда https://trac.ffmpeg.org/wiki/UbuntuCompilationGuide

Других FFmegов - не существует, ибо левые сборки лабухов-умельцев типа Jon Severinsson's не имеют отношения к оффициальным релизам FFmpeg... А версии в репозиториях дистрибутивов не являются FFmpegом как таковым и имеют прямое отношение к Libav...
Ещё раз перечитайте эту главу, видимо до вас всё же туговато доходит: Установка и компиляция FFmpeg на Ubuntu

Если вы не хотите возиться с компиляцией и ставить оригинальный FFmpeg, то юзайте Libav и обращайтесь за документацией и с вопросами - сюда: http://libav.org/
« Последнее редактирование: 16 Января 2014, 01:56:00 от archiver »

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: audio file for avconv
« Ответ #13 : 16 Января 2014, 08:26:33 »
Да, компилировать ffmpeg я не хочу, поскольку есть пакет с ней, но пакет удобнее устанавливать
сответствующий версии дистрибутива, а этот основан на Debian Wheezy.
Мне, конечно, всё равно, avconv или ffmpeg, лишь бы работало. При этом у ffmpeg preset'ы нагляднее:
они сами содержат опции, а у avconv там только название, т.е. опции задаются или в самой программе
или берутся из h-файла. Однако с avconv идут все preset'ы, а для ffmpeg мне пришлось их искать.
Пётр.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: audio file for avconv
« Ответ #14 : 16 Января 2014, 08:28:37 »
Да, компилировать ffmpeg я не хочу, поскольку есть пакет с ней, но пакет удобнее устанавливать
сответствующий версии дистрибутива, а этот основан на Debian Wheezy.
Для дистрибутивов не существует пакетов и репозиториев FFmpeg

Мне, конечно, всё равно, avconv или ffmpeg, лишь бы работало.
Тогда с вопросами и за документацией вам нужно обращаться в Libav - сюда: http://libav.org/
Потому что командная часть этих программ, хоть и не сильно но несколько отличается...

Я же в свою очередь не вижу смысла вести диалог с вами про FFmpeg, когда вы юзаете Libav...
« Последнее редактирование: 16 Января 2014, 08:32:44 от archiver »

 

Страница сгенерирована за 0.025 секунд. Запросов: 21.