Skip to content

Latest commit

 

History

History
57 lines (48 loc) · 2.78 KB

README.md

File metadata and controls

57 lines (48 loc) · 2.78 KB

FFperf(ormance)

TODO:

  • Find a large video file (with audio) that can be both segmented and seek-split.
    • Small file tested already and split-time difference was negligible.
  • Compare the time it takes to segment to the time it takes to seek-split (with and without multiprocessing).
  • Look into threading to increase FFmpeg performance: see this.
    • By default, ffmpeg uses the optimal thread setting but effectiveness varies depending on the codec used.
  • Test more file types and multiple files of the same type.
    • Table of files/filetypes tested.
  • Find which chunking methods work / work best for different file formats.
    • The .mov files tested so far cannot be segmented, but the are from the same source (harmonic).
    • If no segmented .mov file can be found, it is safe to assume video files of this type cannot be split in this way and the error check should be bypassed.
  • Find a threshold for chunking; get enough data to graph chunked transcoding vs singleton transcoding for different file sizes.

Notes

  • yuv420p is required for video player compatibility.
  • Sequential seek-splitting takes longer than segmenting.
  • It is probably a bad idea to have each worker seek-split a file for its chunk. While the workers would have their respective chunks immediately after splitting, the entire file will have to be sent to each worker!
  • Using a manifest file might come in handy: https://github.com/c0decracker/video-splitter

Links

Guidance

Assets

Glossary

segmenting

Using the stream segmenter to chunk a file. This can be performed with one command:

ffmpeg -i input.ext -c copy -f segment -reset_timestamps 1 -map 0

seek-splitting

Chunking a file by seeking a start position and setting a read duration. This is performed with multiple commands:

ffmpeg -ss 0 -t 30 -i input.ext -c copy
ffmpeg -ss 30 -t 30 -i input.ext -c copy
ffmpeg -ss 60 -t 30 -i input.ext -c copy
...