I need to be able to programmatically transcode mpeg-2 files to .mp4, .mp3, .wmv, .rm (optional), and .flv (optional), and hopefully generate a thumbnail as well. I found the Java Media Framework, but it frankly looks pretty crappy. This will be running a Linux server, so I could shell out to ffmpeg using Commons Exec - does ffmpeg do everything I need to do? FFmpeg seems pretty daunting, which is why I'm having trouble finding this information, but it definitely seems to be a jack-of-all-trades. Any suggestions?
Ffmpeg is the best and easiest. To output/convert video:
ffmpeg -i {input}.ext -r {target_frame_rate} -ar {target_audio_rate} -b {target_bitrate} -s {width}x{height} {target}.ext
And your screenshot:
ffmpeg -i {input}.ext -r 1 -ss 00:00:04:005 -t 00:00:01 -an -s {width}x{height} {target_name}%d.jpg
15 fps is standard for flv and audio sample rate should be 44100 for flv. Options to use: -r
specifies a frame rate of 1 fps (one frame used as the screenshot), -ss
seeks to the position you want hh:mm:ss:fff
, -t
is the duration (one second to match your one fps), -an
tells ffmpeg to ignore audio, and -s
is the size of the screenshot. The %d
is necessary as it will be the digit incremented on how many screenshots you use. With the above, %d
will always be the number 1 (one frame, one screenshot). Good luck.