Как лучше всего преобразовать Flash совместимые mp4 файлы с FFMPEG?

17
задан hichris123 15 December 2014 в 22:13
поделиться

7 ответов

To create the interleaving metadata (which will allow for mid stream resumes, and rewinds/fforwards), use the gpac utilities (included in medibuntu for example) to re-interleave the file. Convert to mp4 as follows, with FFmpeg version 0.5 or better:

ffmpeg -f mp4 -i video.mov -b 400k video.mp4

then

/usr/bin/MP4Box -inter 500 video.mp4

Tada! Done! This will stream properly in JW Flv or other flash players.

14
ответ дан 30 November 2019 в 12:51
поделиться

FLV и MP4 являются контейнерами медиа.

часть 2 и H.264 MPEG-4 видеокодеки. (и H.264 дает намного лучшее качество)

, libx264 является кодером для кодека H.264.

mpeg4 является кодером для кодека MPEG-4 части 2.

Flash может только играть видеокодек H.264 в контейнере FLV.

, Таким образом, параметрические усилители должны быть похожими на это:

-f flv -vcodec libx264
4
ответ дан 30 November 2019 в 12:51
поделиться

Я использую последовательность команд, чтобы сделать это, начиная с mencoder. (см. сценарий ниже). Прием - то, что ffmpeg's (и mencoder's) mp4 вывод файла обычно не является флэш-памятью, совместимой из-за способа, которым это чередовано, и они не предлагают хорошее управление этим поведением. Так, я произвожу файл AVI и затем использую mp4box для перемультиплексирования его способ, которым я хочу. Вот мой полный сценарий, который ожидает быть данным .avi файл и производит играемый флэш-памятью .mp4 файл.

#!/bin/bash
#
ORIGDIR=`pwd`
FILE=$@
VID_OUTPUT=${FILE/.AVI/.tmp.avi}
FINAL_OUTPUT=${FILE/.AVI/.mp4}
MENCODER=~/src/mplayer/svn/mplayer/mencoder
BITRATE=500
RES=640:480
LOG=mencoder.$FILE.log

TEMPDIR=`mktemp -d /tmp/transcode.XXXXXXXX`
pushd $TEMPDIR
echo "Pass 1"

PARAMS=keyint=250:bframes=0:qp_min=10:qp_max=51:turbo=1:mixed_refs=0:frameref=1:deblock=0,0:qblur=0:vbv_bufsize=10000:vbv_maxrate=10000:keyint_min=25:me=hex:me_range=16:ip_factor=1.4:pb_factor=1.3:chroma_qp_offset=0:vbv_init=0.9:ratetol=1.0:cplx_blur=20:nocabac:noweight_b:nob_pyramid:partitions=p8x8,b8x8,i4x4:no8x8dct:nossim:deadzone_inter=21:deadzone_intra=11

EXTRA_PARAMS=subq=5:trellis=0:

$MENCODER $ORIGDIR/$FILE -o $VID_OUTPUT -oac faac -srate 44100 -ovc x264 -x264encopts bitrate=$BITRATE:$PARAMS:pass=1 -vf scale=$RES 2>&1 >> $LOG
echo "Pass 2"
$MENCODER $ORIGDIR/$FILE -o $VID_OUTPUT -oac faac -srate 44100 -ovc x264 -x264encopts bitrate=$BITRATE:$PARAMS:pass=2 -vf scale=$RES 2>&1 >> $LOG
MP4Box -aviraw video $VID_OUTPUT
MP4Box -aviraw audio $VID_OUTPUT
TEMP_AUDIO=${VID_OUTPUT/.avi/}_audio.raw
AAC_AUDIO=${TEMP_AUDIO/.raw/.aac}
H264_VIDEO=${VID_OUTPUT/.avi/}_video.h264
echo TEMP is $TEMP_AUDIO
echo AAC is $AAC_AUDIO
echo H264 is $H264_VIDEO
mv $TEMP_AUDIO $AAC_AUDIO
MP4Box -add $H264_VIDEO:fps=29.97 -add $AAC_AUDIO $FINAL_OUTPUT
mv $LOG $ORIGDIR
mv $FINAL_OUTPUT $ORIGDIR
popd
echo Files left in $TEMPDIR
# rm -fr $TEMPDIR
3
ответ дан 30 November 2019 в 12:51
поделиться

Просто некоторые идеи того, почему это могло бы произойти

  • mp4, только поддерживаются во флэш-памяти 9.0.115.0 или выше, какую версию Вы используете?
  • делает веб-сервер, размещающий файл, имеют установку типа пантомимы mp4?

это играет при преобразовании в FLV, и это - опция? Вы тогда использовали бы что-то как следующие опции

ffmpeg -i input.file -f flv -r 25 -b 560000 -s 610x340 -acodec mp3 -ac 2 -ab 64 -ar 44100 output.file
0
ответ дан 30 November 2019 в 12:51
поделиться

Я нашел это (очень подробный, я не уверен, что половина из него даже делает), отрывок где-нибудь в сети. Это сделано для того, чтобы сделать две передачи, таким образом, это не произведет видео на первой передаче, необходимо будет установить его, чтобы сделать - передают 2 , чтобы выполнить вторую передачу и произвести фактическое видео.

ffmpeg -y -i output.mp4 -vcodec libx264 -acodec libfaac -ab 12000 -ac 2 -b 200000 -threads 2 -flags +loop -cmp +chroma -partitions 0 -subq 1 -trellis 0 -refs 1 -coder 0 -me_range 16 -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -maxrate 10M -bufsize 10M -rc_eq \’blurCplx^(1-qComp)\’ -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -s 304x224 -pass 1 yourinfile.avi

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

0
ответ дан 30 November 2019 в 12:51
поделиться

Если вы используете ffmpeg для создания .mp4s, посмотрите в каталог ffpresets / и используйте -vpre. Параметры по умолчанию (для всех кодеков, но особенно для libx264) очень плохие, и практически все они должны быть настроены на что-то особенное. -vpre заботится о большей части этого для x264.

2
ответ дан 30 November 2019 в 12:51
поделиться

В моей коллекции фрагментов у меня есть следующее для этой задачи.

Первый проход ffmpeg:

ffmpeg -y -i input.mp4 -pass 1 -vcodec libx264 -b 2000k -g 300 -bf 3 -refs 6 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method umh -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 3 -flags2 +dct8x8+wpred+bpyramid+mixed_refs -trellis 1 -partitions +parti8x8+parti4x4+partp8x8+partp4x4+partb8x8 -acodec libfaac -ab 128k output.mp4

Второй проход ffmpeg:

ffmpeg -y -i input.mp4 -pass 2 -vcodec libx264 -b 2000k -g 300 -bf 3 -refs 6 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method umh -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 3 -flags2 +dct8x8+wpred+bpyramid+mixed_refs -trellis 1 -partitions +parti8x8+parti4x4+partp8x8+partp4x4+partb8x8 -acodec libfaac -ab 128k output.mp4

Параметры качества: 2000k = битрейт видео, 128k = битрейт звука и 300 = GOP. Не спрашивайте меня, каковы другие параметры. :)

Чередование с MP4Box:

MP4Box -inter 500 output.mp4

Создайте эскиз / изображение плаката (поиграйте с 5, чтобы получить желаемое изображение)

ffmpeg -itsoffset -5 -i output.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -s 1280x720 thumbnail.jpg

Надеюсь, это поможет.

4
ответ дан 30 November 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: