transcode and segment with ffmpeg

55,718

Solution 1

Absolutely - you can use -f segment to chop video into pieces and serve it to iOS devices. ffmpeg will create segment files .ts and you can serve those with any web server.

Working example (with disabled sound) - ffmpeg version 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

Tips:

  • make sure you compile ffmpeg from most recent repository
  • compile with libx264 codec
  • -map 0 is needed

How I compiled FFMPEG - with extra rtmp support to get feeds from

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

Solution 2

This is found in the ffmpeg documentation: https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment

Share:
55,718

Related videos on Youtube

alphablender
Author by

alphablender

Composer and indie Roku Developer at night Roku Developer Program Coordinator at Work

Updated on May 23, 2020

Comments

  • alphablender
    alphablender about 4 years

    It appears that ffmpeg now has a segmenter in it, or at least there is a command line option

    -f segment

    in the documentation.

    Does this mean I can use ffmpeg to realtime-transcode a video into h.264 and deliver segmented IOS compatible .m3u8 streams using ffmpeg alone? if so, what would a command to transcode an arbitrary video file to a segmented h.264 aac 640 x 480 stream ios compatible stream?

    • Dr.jacky
      Dr.jacky almost 9 years
      If TS contain multiple programs (TV programs that captured by DVB-T), how can split it? For example I have a TS file that contain football + cooking + cartoon .How can i split this TS file to 3 mpg files?
  • alphablender
    alphablender about 12 years
    I'm on a mac, snow leopard and I'm trying to compile this, don't need librtmp since i'm not doing RTMP streaming, any suggestions on what to download, steps I need to follow to get this working? FFmpeg how-to's seem to refer to things like libfaad which seems to not be necessary anymore.
  • Aviad Rozenhek
    Aviad Rozenhek almost 12 years
    doesn't work for me, the resulting playlist always has just the last element. [just Stream00009.ts for instance]
  • Dr.jacky
    Dr.jacky almost 9 years
    If TS contain multiple programs (TV programs that captured by DVB-T), how can split it? For example I have a TS file that contain football + cooking + cartoon .How can i split this TS file to 3 mpg files?
  • Brian
    Brian over 8 years
    Use -map 0:X and add the streams you want to pick out. Then you can remux the streams into a new, single program (or however many programs) transport stream.
  • cenna75
    cenna75 about 8 years
    I can't find an answer to do this but with MP4/webm. Can you point me in that direction @vladman ? (I've tried different parameters in cli but couldn't make it work)
  • Shevach Riabtsev
    Shevach Riabtsev almost 5 years
    notice that if 'c:v copy' is used instead of 'c:v libx264' then segmentation is correct if key frames are uniformply disperesed (in case of '-segment-time 4' it's expected each a key frame each 4 seconds).