> Если можете, то объясните зачем нужна опция к примеру
-bsf:v h264_mp4toannexb
Битстрим H.26x может быть в двух форматах: AnnexB и AVCC. Первый имеет примерную структуру:
[start_code][nal][start_code][nal]...[start_code][nal]
где [start_code] - 0x00 0x00 0x00 0x01 или 0x00 0x00 0x01: 2-3 нуля и единица.
AVCC имеет формат:
[extradata][size][nal][size][nal]...[size][nal]
[extradata] содержит в себе копию SSP, SPS и информацию о размере поля [size].
Многие кодеки и контейнера хотят формат AnnexB. Упомянутый выше битстрим фильтр как раз преобразует из AVCC в AnnexB формат. К слову, возможностей по преобразованию в GStreamer больше. Можно гонять в обе стороны.
Не следует копировать на «Хабр» тексты, опубликованные другими людьми на других ресурсах, но можно копировать собственные тексты, если они не нарушают правила ресурса.
это означает, что бы использовались его хидеры при компиляции и что бы вызов `ffmpeg` и других утилит приводил к вызову правильных приложений, а не аналогов от libav. Ну и что бы они были доступны через PATH, а не только по полному пути.
Nextman:
> for ff in ./*.mp4; do ffmpeg -f concat -i <(echo "file '$PWD/$ff $PWD/intro.mp4'"; done) -c copy _"$ff".mp4
в это команде столько синтаксических ошибок, что даже разбирать невозможно. Хотите однострочник? Вот вам однострочник:
for ff in ./*.mp4; do ffmpeg -f concat -i <(printf "file '$PWD/$ff'\nfile /tmp/intro.mp4\n") -c:v copy -c:a copy `dirname $ff`/`basename $ff .mp4`_out.mp4; done
Я вас перестал понимать. Вы сами пишите:
> В папке есть скажем 100 mp4 файлов и с наружи есть один mp4 файл-заставка.
> Нужно к каждому файлу в конце добавить эту заставку.
в результате моей команды будет 100 файлов, которые представляют собой оригинальный + заставка в конце. Вы запускать её пробовали? Судя по всему - нет. Либо вопрос у вас сформулирован в корне неверно.
Nextman: а как пробуете?
нужно как-то так:
ffmpeg -f concat concat.script ....
где внутри concat.script что-то вроде:
~~~ cut here ~~~
file clip.mp4
file clip_ad.mp4
~~~ cut here ~~~
файлик, есесно, нужно формировать для каждой пары, но сложного тут ничего не вижу. А можно и через stdin попытаться:
~~~ cut here ~~~
cat | ffmpeg -f concat -i - out.flv << EOF
file $clip
file $ad
EOF
~~~ cut here ~~~
(проверил - работает)
MusicMan_08: про ffmpeg это нужно вас спросить - в тег добавили :) а вообще, при помощи фильтров и output device sdl можно и воспроизвести. Ваша задача не понятна:
1. Какой критерий поиска? Можете взять просто команду find (я везде подразумеваю Linux).
2. Проигрывать как? Просто без вопросов вывести окно проигрывателя? Или проиграть все новые файлы (критерий - см. пункт 1).
3. Это desktop? Или какой-то сервис?
Стороннему человеку трудно читать мысли других. Можно, к примеру, по какому-то принципу искать нужные файлы (критерий!?) формировать m3u лист и подсовывать vlc/ffplay
Укажите версию FFmpeg и с какими параметрами собран. Сделать можно просто запустите ffmpeg без параметров и опубликуйте информацию типа этой: pastebin.com/7GbN4eZ6
> ffmpeg version 0.10.15 Copyright (c) 2000-2014 the FFmpeg developers
вы обречены с такой старой версией FFmpeg. Почти все вкусные плюшки добавлены после 1.0.x, а ещё больше после 2.0.x. Сейчас актуальная версия - 2.8.4. Чувствуете какая пропасть? Если меня версию невозможно, то, пожалуй, единственный вариант - писать программу самому, используя FFmpeg API.
Bobur Bakhritdinov: а ты откуда брал ffmpeg? И сними скриншот: запусти кодирование, и в разгар оного запусти терминалку и там htop - сними скрин этого окна, поглядеть как у тебя CPU утилизируется. С DTS бывают косяки. Где-то аномалии в самих файлах, где-то в ffmpeg. Можешь попытаться применить PTS фильтр: setpts - ffmpeg.org/ffmpeg-filters.html#setpts_002c-asetpts, его аргументы можно указать как тут: htrd.su/wiki/zhurnal/2015/11/18/ffmpeg_loop - "-vf 'setpts=N/(FRAME_RATE*TB)'" - он будет для каждого кадра монотонно увеличивать PTS, а DTS сам пересчитается в кодировщике. Это если где-то в другом месте косяка нет :)
Nc_Soft: похоже у меня замылился глаз. Да 0 - опитимум. В общем, увидел, что хотел увидеть, т.е. 1 :-) Но замечание дублировать до и после входного файла - в силе. А вообще, инфа у меня, обычно, из исходников, часто там лазить приходится. С вашего позволения - исправлю пост.
Bobur Bakhritdinov: а версия ubuntu какая? Что говорит ffmpeg -version? В любом случае, посмотреть набор кодеков, поддерживаемых вашей сборкой: ffmpeg -codecs.
Sveratum: eyed3 (eyeD3 file.mp3 | iconv -f cp1251), id3tool, mid3iconv из комплекта python-muthagen - для перекодировать из CP1251 (сходи по первой ссылке), mp3info для тегов 1.x, extract и так далее. Для перекодировки - iconv. Не получится - пример файла выложи. Все это есть в Ubuntu 14.04, как минимум, в centos - проверь свой пакетник, может тоже, что есть.
Александр: Если найдёте что-то наиболее адекватное - поделитесь информацией :) правда мне сейчас UVC/UAC более актуально. Но всё же. Если напишите своё - тоже поделитесь, если не NDA.
Славка: Почитай тогда ещё: www.beyondlogic.org/usbnutshell/usb1.shtml. Для Control реквестов используется только EP0 и все данные которые там передаются - твои. В том виде как ты их передашь, они придут на устройство. Естественно на устройстве нужно их обработать. Они полностью соответсвуют полям Setup Request (читай по ссылке, что я тебе дал).
Далее, наличие чего-то в дескрипторах только декларирует эту возможность, но никак не гарантирует, что оно корректно реализовано на стороне девайса. Устройство-то какое? Своё собственное? Есть уверенность в корректности прошивки?
Славка: ну вообще как и любую библиотеку. Если вы не можете престроить или изменить приложение для использования этой библиотеки, то мой ответ не для вашего случая.