madebyhiro / codem-transcode

Offline video transcoder written in node.js
Other
153 stars 68 forks source link

Is it possible to generate multiple bit-rate as well as corresponding master m3u8 in a single job? #36

Closed nurrony closed 9 years ago

nurrony commented 9 years ago

Hi, We need to transcode video files to multi bit-rate HLS. It is generating single m3u8 and corresponding ts segments fine. So is it possible to generate multiple bit-rate as well as corresponding master m3u8 in a single job? If possible then what is the parameters for it?

shafqatevo commented 9 years ago

Hi @jbankston, great work by Codem team! Do you plan to incorporate support for multiple bitrate HLS variants soon?

As of now, what'll be the best approach to generate the multiple bitrate HLS variants? To use one job per variant? Or is it possible to use a single job to generate multiple variants and then somehow generate the master .m3u8 (by some outside script?)?

jbankston commented 9 years ago

Hi @shafqatevo, The HLS integration works by using one file in and one file out then assembling the m3u8 playlist file in post. For example, if you need 3 variants of the same file then it will download the file 3 times and create 3 encoding jobs. In post a separate script assembles the playlist file and updates the database.

shafqatevo commented 9 years ago

Thanks, @jbankston.

Just to reconfirm, we'll need to create 3 encoding jobs, which will generated these 3 variants, right? And the master m3u8 (which lists the variant m3u8s) will have to be generated by us outside of the transcoder?

Any plan to implement this multiple bitrate HLS variant generation including master m3u8 generation within the transcoder?

fredrikj commented 9 years ago

A client software for codem-transcode was created at https://github.com/Eyevinn/codem-client. It can be set up to generate multiple formats. Nothing about m3u8 though. Now that you mention it, it should be added.

tieleman commented 9 years ago

Hi all, we prefer to keep such higher-level tasks (e.g. combining multiple m3u8, or segmenting for MPEG-DASH, other post-processing, etc.) in the software that's actually controlling codem-transcode. The more complex tasks you put in codem-transcode will result in it being less scalable. For example: encoding 8 variants can be split easily among a number of transcoders. But the more we let ffmpeg do for us (i.e. generating all variants at once using one command) will result in it being tied to a single transcoder which can cause scalability/performance issues.

Thanks for pointing out codem-client, it looks interesting!

shafqatevo commented 9 years ago

Got it, @tieleman

@fredrikj, in what ways the Eyevinn Codem Manager is different from Transcodem Scheduler?

fredrikj commented 9 years ago

@shafqatevo: Sorry, I don't have a good answer to that, since I never really looked into Transcodem Scheduler. I'm sure there is overlap. The manager, anyway, can be set up with different transcoding profiles and you can then call it with multiple profile names. Then, you'll get the transcodings back, performed in parallel if you had multiple machines with codem-transcode installed.

shafqatevo commented 9 years ago

Thanks, @fredrikj, we'll take a look at it.