перекодировать и сегментировать с помощью ffmpeg - PullRequest
26 голосов
/ 07 января 2012

Похоже, что в ffmpeg теперь есть сегментатор, или, по крайней мере, есть параметр командной строки

-f сегмент

в документации.

Означает ли это, что я могу использовать ffmpeg для преобразования видео в реальном времени в h.264 и доставки сегментированных IOS-совместимых потоков .m3u8, используя только ffmpeg? если это так, что будет командой для перекодирования произвольного видеофайла в сегментированный поток h.264 aac 640 x 480, совместимый с ios?

Ответы [ 2 ]

35 голосов
/ 06 апреля 2012

Абсолютно - вы можете использовать -f сегмент , чтобы нарезать видео на части и передавать его на устройства iOS.ffmpeg создаст файлы сегментов .ts, и вы можете обслуживать их на любом веб-сервере.

Рабочий пример (с отключенным звуком) - версия ffmpeg N-39494-g41a097a:

./ffmpeg -v 9 -loglevel 99 -re -i sourcefile.avi -an \
-c:v libx264 -b:v 128k -vpre ipod320 \ 
-flags -global_header -map 0 -f segment -segment_time 4 \
-segment_list test.m3u8 -segment_format mpegts stream%05d.ts

Советы:

  • убедитесь, что вы скомпилировали ffmpeg из самого последнего репозитория
  • с помощью кодека libx264
  • -карта 0 необходима

Как я скомпилировал FFMPEG - с дополнительной поддержкой rtmp для получения каналов от

export PKG_CONFIG_PATH="/usr/lib/pkgconfig/:../rtmpdump-2.3/librtmp"    

./configure --enable-librtmp --enable-libx264 \
--libdir='../x264/:/usr/local/lib:../rtmpdump-2.3' \
--enable-gpl --enable-pthreads --enable-libvpx \
--disable-ffplay --disable-ffserver --disable-shared --enable-debug
6 голосов
/ 14 августа 2012

Это можно найти в документации ffmpeg: https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment

...