транскод и сегмент с ffmpeg

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

-Ф-сегмент

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

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

2 ответов


абсолютно - Вы можете использовать -Ф-сегмент нарезать видео на куски и подавать его на устройства 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 из самых последних git хранилище
  • компилировать с кодек поддержкой libx264
  • - карта 0 необходима

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

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

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