LINUX.ORG.RU

ffmpeg конвертирование

 ,


2

4

Я использую ffmpeg для преобразования своего видео, но когда я устанавливаю определенную конфигурацию для конвертирования, звук после преобразования воспроизводится с задержкой. Моя команда: «ffmpeg.exe -i inputFile.mp4 -target film-dv outputFile.mp4 » В документации указано просто установить только некоторую комбинацию для команды «-target» и другие параметры установяться автоматически. Что я делаю не так?

Надо смотреть во что это "-target film-dv" раскрывается, может там дичь какая-нибудь. А может исходник настолько кривой.
Попробуй для начала без target сконвертить (контейнер и кодеки ffmpeg угадает из названия output-файла, всё параметры сжатия будут по дефолту)

P.S.

ffmpeg.exe

А не оффтоп-ли это?

MrClon ★★★★★
()

звук после преобразования воспроизводится с задержкой

Раздели звук и видео и обрабатывай отдельно:

ffmpeg -i inputFile.mp4 -an -c copy inputFile.v.mp4
ffmpeg -i inputFile.mp4 -vn -c copy inputFile.a.mp4
Deleted
()
Ответ на: комментарий от Deleted

Суть в том, чтобы конвертировать под конкретный стандарт видео файла, в данном случае это (film-dv), для других стандартов типа dvd, vcd конвертирует нормально

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

Суть в том,... film-dv...

И в чём особенность этого формата? ffmpeg отказывается конвертировать аудио и видео раздельно в этот формат? ffmpeg отказывается объединять аудио и видео в этом формате? В чём траблы то?

Deleted
()

не делай этого, разделяй потоки (можно ffmpeg) и скармливай их кодекам отдельно, потом склеивай в контейнер (в идеале без ffmpeg, потому что он даёт непредсказуемый результат)

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

Суть в том, что эти стандарты ограниченное говнище и никому не нужны. Даже древнейшие железные плееры держат лучшие параметры. По теме, попробуй обновится и смотри кто там у него за этот формат отвечает, проблема там.

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

В венде сейчас в репах 4.0.2, не очень дряхлая. Неделю назад была 4.0.1, я точно помню. Хотя кто знает откуда он брал, с варезника небось.

В репах mingw-w64 тоже 4.0.2 кстати.

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

Суть в том, что эти стандарты ограниченное говнище и никому не нужны.

Суть в том, что такое говнище как ты, которое не любит стандарты, никому не нужен.

anonymous
()

-target film-dv делает на выходе DV файл, игнорируя заданное расширение. Даже не AVI DV, а голый DV. У тебя получился DV с расширением mp4. Может из-за этого рассинхрон в плеерах. Гарантированно избавиться от рассинхрона можно добавив опции -vsync cfr -async 1. В режиме copy они, конечно, не действуют. Звук отдельно обрабатывать не нужно, а даже вредно. Если нужен AVI DV, этот DV можно перепаковать в AVI через -c copy output.avi или не используй target, а задавай параметры через -c:v dvvideo -c:a pcm_s16le и прочие должны соответствовать стандарту DV. Но DV Film (23.976) не бывает! (всякие извращения не в счет). Может ты имел в виду film-dvd? Тогда надо кодить в vob.

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

И кстати MPEG2 23.976p тоже нестандарт, надо еще прописывать pulldown флаги, ffmpeg по моему не умеет. Причем жуткий нестандарт. Ни одна прога авторинга DVD у тебя его не примет. На 25p 29.97p еще закроет глаза (по стандарту строго говоря должен быть интерлейс 50i 59.94i, даже если видео прогрессивное), но чистый 23.976 на DVD NTSC запрещен! Железки впрочем съедят скорее всего, если контейнер обычный mpg.

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

У тебя исходник 23.976, а ты хочешь скормить DV монтажке? Иначе какой смысл в нем? DV может быть только 29.97. ffmpeg может к нему привести, но простыми дублями, будет рывкотня. Лучше кодь в H.264 MP4 или MPEG2 MPG с исходной частотой для монтажек. Ну или можно сделать PAL DV, ускорив на 4%.

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

Дядь! А где почитать про вот это всё «чистый 23.976 на DVD NTSC запрещен» и многое другое? Но не в спеках, а так, более художественно.

deep-purple ★★★★★
()

Жесть, ffmpeg действительно может закодить DV с опцией -target film-dv, так и пишет fps 23.976. На деле все равно получается 29.97, играется с ускорением на 20% и рассинхроном. Не ожидал от него такой дурости.

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

Годно! Спасибки. А что-то объемлющее все кодеки, форматы и контейнеры есть? Ну чтобы не искать вот так по статье на каждый. В идеале табличкой, да с пояснениями.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple
Ответ на: комментарий от etwrq

Главное nvenc не используй. Нет, оно конечно очень круто и хорошо работает, на какое же дерьмо генерирует... Слишком много ограничений для выходного потока. Про кодирование кудой я ничего не знаю, только про декодирование (в венде).

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

Чорт. А я и не подумал даже в эту сторону когда на ноуте с невидией авконв мне такого нагенерил что все цвета как мультяшные яркие, когда на десктопе ффмпег со встройкой все ок (дистры те же, репы чутка разные).

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

Можно дотвикать до того что будет сносно, только если скармливать NvEncoder сырые данные и артефакты некачественного кодирования будут слишком бросаться в глаза. Но мне кажется это у тебя проблема с тем как libav/ffmpeg работают с потоками внутри. Там ещё отдельные приключения с цветовыми профилями.

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

Я просто скринкастил и затем жал. Команды абсолютно идентичные, ну кроме что размеров экрана и имени программы (авконв/ффмпег).

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

К слову, NvEncoder кодирует кудой, ему можно скармливать сырой поток из ffmpeg. Это nvidia_video_sdk, пару лет не интересовался вопросом поскольку результаты меня совершенно не устроили. И 10 битный h265 должен получше картинку выдавать наверное, у меня просто нет паскаля или волты.

https://developer.nvidia.com/nvidia-video-codec-sdk

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

Не, так не получится. Это в принципе разные вещи, полноценный программный энкодер и это. Настраивать нужно. Качественной картинки визуально похожей на оригинал вообще не получить (не в последнюю очередь из-за похеренных цветов), лучше уж использовать x265 ultrafast-superfast-veryfast с 10 битным профилем (особенно если не хочешь ничего твикать).

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

Если q это crf у x264_encoder, то с таким низким качеством тебе нужен x265 (где это дефолт и он даёт хорошую картинку). У x264 21 и меньше чтобы норм. У nvenc всё вообще не так.

Бери пресет отсюда короче, medium даёт хорошую картинку с приемлемой скоростью, но me там всё ещё hex и ты хочешь slow или slower, если тебя волнует качество. Просто veryslow действительно вери. Можно артефакты забить высоким битрейтом конечно.

Если на ютуб заливаешь, то можно твикнутый (у меня от артефактов me горит) ультра фаст, он всё равно перекодирует и чем проще тем лучше, главное битрейт повыше оставлять.

anonymous
()

Разделять вот так:

ffmpeg -i файл.mp4 -acodec copy -vn файл_аудио.aac
ffmpeg -i файл.mp4 -an -vcodec copy файл_видео.mp4

После обработки аудио и видео:

ffmpeg -i файл_аудио.aac -i файл_видео.mp4 -acodec copy -vcodec copy файл_обработанный.mp4
ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

файл_аудио.aac

Лучше файл_аудио.m4a. aac сырой поток, его даже проиграть (для проверки) затруднительно будет.

А зачем вообще разделять? Чтобы звук обработать (и пересжать?). Можно поиметь рассинхрон в некоторых случаях. Тогда лучше в wav:

ffmpeg -i in.mp4 -c:a pcm_f32le -async 1 out.wav
После обработки пересжать:
ffmpeg -i in.wav -c:a libfdk_aac -vbr 5 out.m4a
или
ffmpeg -i in.wav -c:a aac -b:a 192k -ac 2 out.m4a
и мукс
ffmpeg -i video.mp4 -i audio.m4a -map 0:0 -map 1:0 -c copy out.mp4
Если пересжатие не нужно и обязательно надо разобрать на потоки в ffmpeg, перед этим рекомендую прогнать файл через виндовую VideoReDo TVSuite, она все нестандартности исправит (поддерживает mkv, mp4, mpg, ts). На крайний случай распаковывайте виндовым eac3to, он тоже нестандартности в звуковых дорожках (некоторых) исправляет при демуксе, но работает только с mkv:
eac3to in.mkv -demux

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

Ничё не затруднительно, это у тебя наверно венда не настроена по-человечески просто. У меня такое, вполне норм:

    # TODO check src_abrate and set aext accordingly to the codec selection
    if [[ 'AAC' == "$src_acodec" ]]; then
        echo "COPY AAC"
        faudio="${fbname}.aac"
        [[ -r "${faudio}" ]] || ffmpeg -v 0 -i "${fname}" -vn -c:a copy "${faudio}"
        # NOTE raw aac doesn't have duration
        #audiodur=`mediainfo "${faudio}" --Output='Audio;%Duration%'`; [[ -n $audiodur ]] && zz=$(echo ${audiodur} /1000 | bc)
    elif [[ 'Vorbis' == "$src_acodec" ]]; then
        echo "COPY VORBIS"
        faudio="${fbname}.ogg"
        [[ -r "${faudio}" ]] || ffmpeg -v 0 -i "${fname}" -vn -c:a copy "${faudio}"
    else
        echo "ENCODE VORBIS"
        faudio="${fbname}.ogg"
        [[ -r "${faudio}" ]] || ffmpeg -v 0 -i "${fname}" -vn -acodec libvorbis -ab 256k "${faudio}"
    fi

я конечно ворбис в контейнере храню и aac нет хммм, но проблем не было.

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

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

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

Лучше файл_аудио.m4a. aac сырой поток

А как было в старых нокиа? Там были рингтоны в виде файлов aac, в них даже метаданные были. Или это были файлы в контейнере mp4, но с расширением aac?

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

перед этим рекомендую прогнать файл через виндовую VideoReDo TVSuite, она все нестандартности исправит (поддерживает mkv, mp4, mpg, ts). На крайний случай распаковывайте виндовым eac3to, он тоже нестандартности в звуковых дорожках (некоторых) исправляет при демуксе,

Что такое «нестандартности»? И почему нужны вендовые утилиты, что нет нормальных линуксовых?

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

Интересно какие нестандартности в звуке. Это видео бывает с переменным фреймрейтом например, звук то разве бывает такой?

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

delay (чаще всего), gaps, overlaps (значительно реже), перетяжка средствами контейнера (очень редко). У видео тоже бывает. Иначе говоря нестандартные таймкоды, они могут быть практически во всех контейнерах, кроме avi. Например, из-за сбоев при захвате ТВ. Плееры, включая железные, как правило их поддерживают, а вот конвертеры, муксеры-демуксеры, видеомонтажки далеко не все = чревато рассинхроном.

На линуксе исправить их тоже можно в ffmpeg, но только с пересжатием. VideoRedo и eac3to могут оперировать сырыми данным не перекодируя, причем eac3to корректирует только звук, хотя в логе показывает и сообщения про видео. VideoRedo обычно вставляет на месте звуковых гапов видеокадры, так как она умеет частично пережимать видеопоток (если редактируется не на ключевых I кадрах).

И почему нужны вендовые утилиты

На винде, кстати огромное количество медиаутилит и медиасофта, я держу ее для тестинга. Линуксу такое и не снилось. Жаль, что этот софт обычно сильно гадит и делает что вздумается в системе, как впрочем и сама винда живет своей жизнью.

Там были рингтоны в виде файлов aac, в них даже метаданные были.

Были, а была ли в них перемотка, сомневаюсь. А метаданные можно хоть в wav засунуть, вопрос насколько это стандартизировано и поддерживаемо.

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

delay, gaps, overlaps

Это инструкции для декодера вставить/удалить в определенных местах определенное количество аудиотишины или видекадров для поддержания синхронизации видео и звука. Например, программа видеозахвата не успела захватить кадр, чтобы не потерять синхронизацию со звуком, она просто пишет в таймкод «тута должен бы быть кадр, ты уж декодер сам его вставь, ну не смогла я». Иногда они появляются при склейке нескольких файлов, если звук (в каждом из них) немного длиннее или короче видео, появляются дыры. Я как-то давно клеил в авидемуксе серии из сериала. В первой серии звук прервался почему-то на середине (вопрос к релизеру). Так после мукса с середины первой серии заиграл звук из второй серии, т.к. avidemux эту огромную пустоту не учел. А вот mkvtoolnix бы учел. Так что осторожней со склейкой. ConvertXtoDVD не учла гэпы в MKV файле, а железный плеер учел.

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

Были, а была ли в них перемотка, сомневаюсь. А метаданные можно хоть в wav засунуть, вопрос насколько это стандартизировано и поддерживаемо.

В вав понятно, что можно. А вот в аас сомневаюсь. Но я точно помню, что в нокиах были file.aac с метаданными.

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

Хотя сам foobar не показывает даже продолжительность. SMPlayer и Audacious показывают примерную, с ошибкой в 2 секунды.

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

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

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

Цвета и мыло во все щели как пример. Сравни с равками в следующий раз, там есть какой-то лосслесс кодек сжимающий равки довольно неплохо, вот им для хранения пожми.

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

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

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

превью - захват с просмотром с /dev/video в tvtime,vlc или qv4l2

kott ★★★★★
()

Не вникал в тред, но кажется никто ещё не советовал выкинуть опцию -target film-dv и заменить её на набор настроек кодеков, примерно соответствующий этому самому film-dv.

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

выкинуть опцию -target film-dv и заменить её на набор настроек кодеков

Можно и так

-c:v dvvideo -s 720:480 -aspect 16:9 -pix_fmt yuv411p -r 29.97002997 -c:a pcm_s16le -ac 2 -ar 48000

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

Ещё должны быть настройки качества. Умолчание хорошо для сжатия исходного видеопотока с захвата, но при перекоде имеющегося видео будут большие потери.

kirill_rrr ★★★★★
()
28 ноября 2018 г.
Ответ на: комментарий от anonymous

NTSC DV может быть только 29.97

Не знаю насколько это соответствует стандартам, но DV может быть 23.976 и монтажки его понимают. К тому же в опциях экспорта MXF DV есть частота 23.976
ffmpeg -i in.mkv -c:v dvvideo -s 720:480 -aspect 16:9 -r 23.976023976 -pix_fmt yuv411p -c:a pcm_s16le -ac 2 out.avi
Только цветовое пространство ухудшится с 4:2:0 до 4:1:1 (а по сути 4:1:0). Но это надо покадрово сравнивать насколько заметно. Осторожнее только при DV экспорте из монтажек, они могут понаделать 2:3 Pulldown.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.