web-dev-qa-db-fra.com

transcoder et segmenter avec ffmpeg

Il semble que ffmpeg ait maintenant un segmenteur, ou au moins il y a une option en ligne de commande

-f segment

dans la documentation.

Cela signifie-t-il que je peux utiliser ffmpeg pour transcoder en temps réel une vidéo en h.264 et fournir des flux segmentés IOS compatibles .m3u8 en utilisant ffmpeg seul? Si oui, quelle serait une commande pour transcoder une vidéo arbitraire fichier vers un flux segmenté h.264 aac 640 x 480 flux compatible ios?

26
alphablender

Absolument - vous pouvez utiliser - segment f pour découper la vidéo en morceaux et la servir aux appareils iOS. ffmpeg créera des fichiers de segments .ts et vous pouvez les servir avec n'importe quel serveur Web.

Exemple de travail (avec son désactivé) - version 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

Conseils:

  • assurez-vous de compiler ffmpeg à partir du référentiel git le plus récent
  • compiler avec le codec libx264
  • -la carte 0 est nécessaire

Comment j'ai compilé FFMPEG - avec un support rtmp supplémentaire pour obtenir des flux de flash-media-server

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
35
vladaman
6
Mahendra