OnlyInAmerica / FFmpeg-Android

Script and Instructions for building FFmpeg for Android
83 stars 30 forks source link

librtmp #1

Open wmsgeek opened 10 years ago

wmsgeek commented 10 years ago

Hello, after compiling how do we pas the complex rtmp urls? example : rtmp://host.com/live playpath=123 swfUrl=http://host.com/123.swf live=1 pageUrl=http://website.tv timeout=10 token=token do we send as AVOptions to Vitamio or just like a normal link. thanks

OnlyInAmerica commented 10 years ago

The RTMP url is passed as the output location to the FFmpeg libraries just like any other path. The process for instructing FFmpeg to write data to "test.mp4" and "rtmp://test.com/teststream" is identical from a client programmer's perspective. As long as you pass a well-formed URL, it should work.

Beyond passing the url, you'll have to make sure your AVFormatContext and AVCodecContext are populated correctly. This is a larger question that will probably be better served by the FFmpeg community and lots of personal experimentation. I'm still figuring out how to properly specify all the necessary parameters myself.

I have some example JNI glue code you can check out. It covers the simple case of writing AV packets to FFmpeg with the following process:

wmsgeek commented 10 years ago

woah, and here i though we could just pas parameters directly to FFMPEG, my luck. that would be not possible by me :/ this was for a live streaming app. i can just use AVOptions but parameters like token are not available (as input). thanks

OnlyInAmerica commented 10 years ago

You can build the ffmpeg binary by removing the --disable-programs flag in build_ffmpeg_for_android.sh, then simply call the binary from Java. In that case you'd do something like:

ffmpeg -re -i input.mp4 -codec copy -f flv rtmp://your_url

This would only be useful if you're trying to stream a pre-existing file on the Android device to an rtmp endpoint.

wmsgeek commented 10 years ago

I guess you didnt get my point. The idea is to pas rtmp parameters as input not output to rtmp, the app I have is to watch tv streams it does not broadcast. Like we use AVoption in Vitamio (rtmp_xx) my plan was to use librtmp parameters I hope you can give me an idea how this can be done. I can link you to my app if required.

bolds07 commented 6 years ago

4 years later but... you were trying to kill a fly with a nuclear bomb... why using a whole ffmpeg just to read rtmp stream?

I was in university [2010] and there was already java api to handle this kind of video data