Ffmpeg конвертировать flv в mp4 без потери качества [дубликат]

этот вопрос уже есть ответ здесь:

в настоящее время я преобразования .flv флэш-файлы .уэбм И. файлы mp4 для использования с видеоплеером HTML5.

_

Я использую эту команду ffmpeg для WEBM:ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis filename.webm
который работает отлично и размер файла остается относительно тем же (imporatant).

_

для MP4 я использую следующее: ffmpeg -i filename.flv -sameq -ar 22050 filename.mp4

преобразуется в .mp4 штраф и предотвращает любую потерю качества, но размер файла почти утраивается в размере.

какая формула ffmpeg может быть использована для преобразования в MP4 без потери качества и предотвращения гораздо большего размера файла?

2
задан Chad Whitaker
16.01.2023 0:52 Количество просмотров материала 3555
Распечатать страницу

6 ответов

ffmpeg -i filename.flv -c:v libx264 -crf 19 -strict experimental filename.mp4

необходимо указать используемый видеокодек. В вашей команде вы не указываете -vcodec или -c:v поэтому ffmpeg использует кодек по умолчанию для MP4 (mpeg4) которое не имеет очень хорошую эффективность обжатия. Вместо этого попробуйте использовать libx264 и установите CRF, который является уровнем качества (ниже лучше, по умолчанию 23, а разумные значения находятся между 18 и 28).

кодирование с помощью libx264 довольно сложное, поэтому вы должны посмотреть H. 264 кодирование guide.

необходимо указать -strict experimental иначе получится : "кодер 'ААС' экспериментальное, но экспериментальные кодеки не включены, добавьте '-строгая -2' Если вы хотите использовать его."

45
отвечен sashoalm 2023-01-17 08:40

эта команда изменяет только контейнер без перекодирования

ffmpeg -i input.flv -codec copy output.mp4
37
отвечен c97 2023-01-17 10:57

avconv и ffmpeg по сути то же самое. [по состоянию на совсем недавно существует некоторое расхождение, но на самом деле не так много, чтобы писать домой, если вы скомпилируете свой собственный ffmpeg [один из предоставленных в Ubuntu репозиториев, например, старый и страдает от того, что размер видео не бла-бла-бла сделки [в основном пытается сказать вам видео имеет неправильные пропорции], но если вы потрудились читать ffmpeg compile руководство и скомпилировать его из git он не имеет ни одной из проблем старых версий, которые приходят шток в большинств OSes. предупреждение об амортизации со ссылкой на avconv говорит вам, что они создали новый util, чтобы попытаться заменить ffmpeg, но это SO широко используется, что даже если они попытаются отрезать его, мы все будем создавать softlinks из avconv до ffmpeg в любом случае, поэтому они не собираются прекращать работу и бросить его.]]

это не плохо использовать avconv, Я только что видел один ответ, в котором упоминается предупреждение об амортизации, которое по существу является пустое сообщение должно быть больше для альтернативы ffpmeg, вы можете попробовать avconv, что более верно для случая здесь.

avconv -i inputfile.flv -map 0 -c:v libx264 -c:a copy outputfile.mp4

действительно то же самое, что

ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis

по существу, в первом вы используете более короткие варианты, а во втором-более написанное разнообразие.

и -map 0 имеет в виду звуковые дорожки, так что если использовать что-то вроде mp4a, который может обрабатывать несколько звуковых дорожек, просто отлично вы можете оставить это, чтобы скопировать все аудиопотоки в результирующий файл. Это требуется только в том случае, если с помощью кодека, который не поддерживает несколько звуковых дорожек в том же файле, то вы хотели бы отобразить необходимые аудио и не все. Конечно, если вы пытаетесь минимизировать используемое пространство, вы можете указать только один, чтобы попытаться сбить немного размера с файла [звук похож, возможно, на 1/3 размера видеотрека [и это щедро]].

-c:v = codec(video) так: -c:v libx264 такое же как использовать: -vcodec libx264 FYI; то же самое с этим пример: -c:v copy = -vcodec copy

и, кроме того, для FLVs будьте осторожны, файл flv такой же, как avi в том, что это контейнер, который может содержать любое количество кодеков для видео или аудио. Вы хотели бы сначала использовать media inspection утилиту выбора, чтобы увидеть, что используется в самом файле, прежде чем выбрать либо просто скопировать видео и/или аудио поток, или если вы хотите, чтобы transmux его от того, что это было что-то новое. Таким образом, команда, которая лучше всего работает для одного FLV может не быть одинаковым для другого FLV [конечно, обычно, если вы получаете несколько flv из одного источника, они будут закодированы одинаково, но это никогда не является гарантией].

не пытаясь выбрать nit, просто наткнулся на это в веб-поиске и хотел попытаться немного прояснить ситуацию для людей.

опять же, как этот ответ утверждает для ответа ниже этого да работает ffmpeg всегда будет размещать это сообщение, по существу, полые, как эти 2 utils действительно все еще просто тот же util с очень небольшой разницей. Вы должны почти во всех случаях получить точно такие же результаты, используя любую команду. Это не обязательно приведет к полному повторному транскодированию, почему? A, если это не требуется, это экономит массу времени, и B если вы повторно перекодируете файл, он уже был сжат в видеокодек, вы по существу запускаете процедуру сжатия против чего-то, что уже сжато и всегда будет приводить к меньшему качеству, чем источник. Самые новые кодеки несколько кросс-совместимый [не все] , как, например, flv может технически быть MP4 в обертке FLV, поскольку flv, такие как AVIs, являются просто контейнерами других кодеков. Таким образом, это зависит от того, что исходный flv имеет для видео и кодека ausio по сравнению с тем, что вы конвертируете его в отношении того, нужно ли его транскодировать вообще. Если в FLV они использовали видео H264 MP4 и MP4a для аудио, вам не нужно будет повторно перекодировать вещь, вам нужно будет только скопировать ее и настроить заголовки файлов, поэтому он читается как истинный MP4 вместо видео MP4 внутри файла FLV.

3
отвечен Pariah 2023-01-17 13:14

по данным данное руководство, правильная команда для преобразования FLV в MP4 без какого-либо AV перекодирования это:

ffmpeg -i input.flv -c copy -copyts output.mp4

он отлично работал для меня во всех случаях с AVC видео и AAC или MP3 аудио.

3
отвечен Al Kepp 2023-01-17 15:31

при использовании ffmpeg я получил предупреждение об устаревании для использования avconv. С помощью avconv я получил хорошие результаты:

avconv-i inputfile.вашы -карте 0 с поддержкой libx264-С в:копию выходной_файл.МР4

читать man avconv для получения дополнительной информации.

-1
отвечен gare_c 2023-01-17 17:48

Я предлагаю вам создать shell-скрипт для этого называется video_flv_to_mp4 следующего содержания :

ffmpeg -i  -sameq -ar 22050 -vcodec libx264 .mp4 

затем запустите его следующим образом:

$ video_flv_to_mp4 video.flv

Это даст вам видео.flv.mp4 файл.

-2
отвечен Thibault 2023-01-17 20:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх