3

I have h264 videos, and currently we're using Apple's HTTP Video Streaming tools and mediafilesegmenter to segment these files. What I need to do is to switch to alternative segmenter based on this very popular open-sourced segmenter

The problem is that this segmenter does not just take any video, but takes only MPEG-TS videos. So I have to convert my h264 videos to TS first.

I can do that with ffmpeg. I'm using this:

ffmpeg -i encoded.mp4 -vcodec h264 -i encoded.mp4 -sameq -acodec aac -strict experimental -f mpegts output.ts  

But this creates fairly larger output. And the reason is that Apple's segmenter keeps the same codec - AVC and the same audio codec - AAC, whereas ffmpeg changes video format to MPEG Video.

The question is: can I somehow keep the same AVC video codec and still convert video to a transport stream?

So my goal is to keep the same video quality and same video codecs as Apple's medifilesegmenter does.

UPD: Okay... it seems that ffmpeg CAN split videos into segments:

ffmpeg -i encoded.mp4 -c copy -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_list test.m3u8 -segment_format mpegts segment%d.ts

That's still has one problem: it doesn't create http live streaming index file. (-segment_list creates a file with list of segments, but it doesn't look like HLS index). So, you still have to create index file

3 Answers 3

6

Try:

ffmpeg -i in.mp4 -acodec copy -vcodec copy out.ts

Ffmpeg also has a segmenter. See http://ffmpeg.org/ffmpeg.html#segment_002c-stream_005fsegment_002c-ssegment

3
  • yeah I know that now, but is it compliant with HLS? I'm asking because it doesn't create correct .m3u8 index files. So you still have to build those somehow. Later today I'm gonna try to manually create m3u8 and play these segmented videos
    – iLemming
    Commented Jun 20, 2012 at 14:11
  • @agzam: Here is the spec for HLS tools.ietf.org/html/draft-pantos-http-live-streaming-08
    – user319862
    Commented Jun 23, 2012 at 14:24
  • @agzam: tools.ietf.org/html/… shows you what a simple m3u8 can look like
    – user319862
    Commented Jun 23, 2012 at 14:26
2

Try setting -segment_list_type to m3u8. From the look of it the list is fine for static file conversion but not live streams, as segment duration is not added to the list until close_list is called.

The list type should be set from the list name file extension in current releases, but it isn't.

2

Try setting -segment_list_flags live

1
  • 1
    Can you elaborate on this? Thanks.
    – fixer1234
    Commented Nov 6, 2015 at 15:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .