So, I’ve got to have a solution where I can take output from the FlashPlayer Microphone and Camera, produce Live Video and (at least) VOD for Flash and IOS. Until a Transcoder for Wowza 3, or until Adobe updates FlashPlayer, that means Transcoding is a DIY project.
The tool that seems right for the job is XUGGLER with ffmpeg.
The news on the streets is that using ffmpeg to transcode the FLV stream is awful - it is awful. What’s odd though is that the Converter.java example that is a kind of example stand-in for ffmpeg generates files that aren’t awful. This is strange in that most of the code is supposed to be the same.
The ffmpeg args are like this generate a poor video:
ffmpeg -i rtmp://localhost/live/vrtest -acodec libfaac -y vrtest.mov
The Converter.java args are like this generate a nice video:
java Converter -vquality 0 -acodec libfaac rtmp://localhost/live/vrtest file://Users/myHome/tmp/vrtest.mov
What gets stranger is that when I use LiveStreamRecord module to save the output from FlashPlayer on the Live stream, the output can’t be processed by the Converter class if I save it with startOnKeyFrame set to true with the following errors:
16:49:10.627 [main] ERROR org.ffmpeg - [flv @ 0x10300e800] Bad picture start code
16:49:10.632 [main] ERROR org.ffmpeg - [flv @ 0x10300e800] header damaged
Error: could not decode any video. stream: 0
Strangely, this doesn’t happen when I use FlashLiveEncoder with similar settings to what the FlashPlayer is putting out. Using FlashLiveEncoder is not a solution for me and I’ve got to start with a complete frame (which you don’t get without using startOnKeyFrame).
Any suggestions would be appreciated.
Thanks,
Leo