I want to implement a video streaming pipeline with ABR streaming. Can anyone tell me which video format would be the best for ABR streaming?
I would say HLS and MPEG-DASH are the most commonly used Adaptive Bitrate Streaming methods. Whereas, MPEG-TS (.ts) and Fragmented MP4 (.fmp4) are widely used ABR streaming formats. MPEG-TS is quite old and widely supported and it was the only supported format for HLS before version 4, HLS version 4 added support for fmp4. It was supported by MPEG-DASH from start.
Compared to MPEG-TS, the fmp4 format has less overhead and the biggest advantage is you can use both HLS and MPEG-DASH streaming methods with the same media files.
Interesting! but how to convert the MP4 file to MPEG-TS format?
FFmpeg provides a bitstream conversion filter that allows you to convert from MP4 format to MPEG-TS format using a single command.
ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts output.ts
How can I use ffmpeg or other methods to combine 1000s of video files into one?
For that, you can use “concat” input format provided by ffmpeg.
Example: Create a text file: file “100.ts” file “101.ts” …
Save it like merge.ffconcat
Then use this command to merge the video files into one and you can also re-encode it if necessary.