Подтвердить что ты не робот

Преобразование видео для Android с использованием FFMPEG

То, что я пытаюсь сделать, - это конвертировать видео в формат mp4, который будет воспроизводиться на Android.

Я прошел через http://developer.android.com/guide/appendix/media-formats.html

Я устанавливаю следующие параметры

-vcodec libx264 -vprofile baseline -acodec libfaac -ar 44100 -ac 1 -ab 128k еще я получаю сообщение об ошибке "Извините, это видео не подходит для потоковой передачи на это устройство"

Я воспроизвел видео в браузере Android с помощью videoJS http://video-js.zencoder.com/oceans-clip.mp4, и он работает нормально.

Загружаю видео oceans-clip.mp4 и пытаюсь преобразовать с помощью минималистских опций

-y -i work.mp4 -vprofile basel pleasework.mp4

но я получаю то же сообщение об ошибке.

Ниже приведена информация о файле FFMPEG для видеофайлов

Working.mp4

Array
(
    [0] => ffmpeg version N-40229-g24e3f44-syslint Copyright (c) 2000-2012 the FFmpeg developers
    [1] =>   built on Apr 29 2012 22:01:41 with gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
    [2] =>   configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder=liba52 --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include/ --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint
    [3] =>   libavutil      51. 48.100 / 51. 48.100
    [4] =>   libavcodec     54. 17.101 / 54. 17.101
    [5] =>   libavformat    54.  3.100 / 54.  3.100
    [6] =>   libavdevice    53.  4.100 / 53.  4.100
    [7] =>   libavfilter     2. 72.100 /  2. 72.100
    [8] =>   libswscale      2.  1.100 /  2.  1.100
    [9] =>   libswresample   0. 11.100 /  0. 11.100
    [10] =>   libpostproc    52.  0.100 / 52.  0.100
    [11] => Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'working.mp4':
    [12] =>   Metadata:
    [13] =>     major_brand     : isom
    [14] =>     minor_version   : 1
    [15] =>     compatible_brands: isomavc1
    [16] =>     creation_time   : 2010-05-18 04:24:00
    [17] =>   Duration: 00:00:46.54, start: 0.000000, bitrate: 3342 kb/s
    [18] =>     Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x264 [SAR 132:133 DAR 320:133], 3195 kb/s, SAR 127:128 DAR 635:264, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    [19] =>     Metadata:
    [20] =>       creation_time   : 2010-05-18 04:24:00
    [21] =>       handler_name    : GPAC ISO Video Handler
    [22] =>     Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 144 kb/s
    [23] =>     Metadata:
    [24] =>       creation_time   : 2010-05-18 04:24:01
    [25] =>       handler_name    : GPAC ISO Audio Handler
    [26] => At least one output file must be specified
)

Не работает .mp4

Array
(
    [0] => ffmpeg version N-40229-g24e3f44-syslint Copyright (c) 2000-2012 the FFmpeg developers
    [1] =>   built on Apr 29 2012 22:01:41 with gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
    [2] =>   configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder=liba52 --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include/ --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint
    [3] =>   libavutil      51. 48.100 / 51. 48.100
    [4] =>   libavcodec     54. 17.101 / 54. 17.101
    [5] =>   libavformat    54.  3.100 / 54.  3.100
    [6] =>   libavdevice    53.  4.100 / 53.  4.100
    [7] =>   libavfilter     2. 72.100 /  2. 72.100
    [8] =>   libswscale      2.  1.100 /  2.  1.100
    [9] =>   libswresample   0. 11.100 /  0. 11.100
    [10] =>   libpostproc    52.  0.100 / 52.  0.100
    [11] => Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'pleasework.mp4':
    [12] =>   Metadata:
    [13] =>     major_brand     : isom
    [14] =>     minor_version   : 512
    [15] =>     compatible_brands: isomiso2avc1mp41
    [16] =>     creation_time   : 2010-05-18 04:24:00
    [17] =>     encoder         : Lavf54.3.100
    [18] =>   Duration: 00:00:46.54, start: 0.000000, bitrate: 1843 kb/s
    [19] =>     Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x264 [SAR 127:128 DAR 635:264], 1715 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    [20] =>     Metadata:
    [21] =>       creation_time   : 2010-05-18 04:24:00
    [22] =>       handler_name    : VideoHandler
    [23] =>     Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 124 kb/s
    [24] =>     Metadata:
    [25] =>       creation_time   : 2010-05-18 04:24:00
    [26] =>       handler_name    : SoundHandler
    [27] => At least one output file must be specified
)

Метаданные выглядят почти одинаково, но, похоже, они не играют в android. Любая помощь была оценена.

4b9b3361

Ответ 1

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

Просто запустите:

ffmpeg -i <input> -c:v libx264 -c:a aac -movflags +faststart output.mp4

Также см. Пост-обработка в ffmpeg для перемещения атома moov в файлах MP4 (qt-faststart)

Ответ 2

libfaac больше не поддерживается, вы можете использовать эту конфигурацию:

ffmpeg -i <input> -s 480x320 -vcodec mpeg4 -acodec aac -strict -2 -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2 <output>  

Ответ 3

Решение, которое сработало для меня, было:

ffmpeg -i <INPUT_VIDEO> -c:v libx264 -profile:v baseline -c:a libvo_aacenc -ar 44100 -ac 2 -b:a 128k -movflags faststart output.mp4

Я использую Ubuntu 16.04.1 LTS

Ответ 4

Решение, которое сработало для меня, было:

ffmpeg -y -i input_file.mp4 -s 352x288 -b:v 384k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8 -subq 6 -trellis 0 -refs 5 -bf 0 -coder 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -c:a aac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2 -strict experimental output_file.3gp

Я преобразован в 3gp. Он работает в API 16 или выше, используя VideoView.