Any one have idea what resolution android support.. what is the idle bit rate and Frame rate for android mp4 video...
There are a plethora of android devices (60+) with different screen resolutions and decoding horsepower. There is not likely to be one right answer for this, the lower you keep your resolution the more devices will be able to play and the faster the experience will be even for the bigger devices esp if you are moving video across the network.
Edit: I think the lowest resolution screen on a production android device is 240×320 in the 2.8" screen on the HTC Tattoo.
Related
In my Android app, I would like to use 16:9 resolution for camera preview & transmit via WebRTC call
Wanted to go with 360p (640x360) since its common & it wont require high bitrate to transmit
I am using Camera2 API. As a best practice, I first identified the list of supported resolution on the device to check if 360p is supported or not. Once verified, I proceed to create cameraCapturesession
But this check is failing in some devices - Real Me 5 Pro, Redmi Note 7S, redmi note 7 (all running android versions >=9)
Though it seems to be a popular resolution, 360p is not available in the list of supported resolutions in these devices
List is fetched via cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(SurfaceTexture.class)
It was not available with getOutputSizes(ImageFormat.JPEG) as well
And When I force to create the cameraCaptureSession with 640*360 without verifying supported resolution, It actually worked - it was able to capture 640x360 resolution. Looks like device camera actually supported it, but not available in the list fetched from cameraCharacteristics.
I assume i cannot force this resolution without doing check - as it might not work in some device and will throw exception/crash
I thought of adding a fallback by choosing closest match for 360p - either 16:9 will have to be compromised or 1280x720 will have to be chosen - it ll require higher bitrate to transmit
I think 360p is a std resolution- Any possible reason why it is not listed as supported, but actually worked when forced?
As per my understanding of doc, SCALER_STREAM_CONFIGURATION_MAP should return exhaustive list of resolutions supported by hardware
Am I missing anything? Please suggest solution or workaround
16:9 at 640x360 is not really used much on modern mobile cameras, because it's such a low resolution. 720p is about the lowest size people want to record video at, so that gets reflected in the sizes supported.
However, 640x480 (4:3 VGA) is guaranteed to be supported, so the safe thing is to use that and crop if you want to get 16:9.
Assuming the size will work if it's not listed is very risky - it might, or might be stretched, or it might work but if you add some other output it might fall over. And all of this is going to be device-specific, so you just won't know ahead of time, and some new device may just fail. So I don't recommend it at all.
Assuming I have a new Android phone with a wide-angle back lens that can record with its native Camera App at Full-View mode (so we utilize the sensor as much as possible to not miss any visual information). Assume that the phone can even do that at 60FPS (I guess there are such phones but if not, please correct me).
The question is: Do you think that one could achieve the same footage (maybe using the NDK or CameraX) but at lower resolutions? I mean, keep the Full-View (because I do not want to crop the scene), but just lower proportionally the XY resolution. Is this something that is supported? Or are the settings offered by the native Apps the only possible options that a 3rd party developer can have?
If this can be achieved, how can one identify and use the Camera capabilities to set this up? (i.e. Full-View, Max FPS available for that Full-View and a resolution lower than 0.3MP shaped to that Full-View). Code example is more than welcome.
I'd like to know, how can I select the best resolution to build a 2D game in android?
You can go with 1920*1080 - this will give you a clear output on most current devices - and use FitViewPort or ExtendViewPort as you wish.
I'm rendering my graphics in 2K resolution (i.e. in 3040 x 1,40 - aiming most popular high-end phones of today, i.e. Samsung S10) so it will definitely look well on screens with higher resolution. And then I'm using camera zoom to display it properly on current screen resolution. It does take a bit more space for graphics and it's probably loosing some frame per second but on today's devices it's acceptable loss. My games run smooth even on older devices, so I don't think it's an issue at all.
I have made an app which works well on iOS but has performance problems on Android. I have noticed that on older devices such as galaxy s2 with a low screen resolution, the app is fine. It only lags on the new hd devices such as the galaxy s4 and nexus 4.
Are high screen resolutions causing the devices to lag?
Does anyone know what I can do to find out how to fix this?
It's really strange because it's only on the new devices.
Not sure why it is happening on the S4 since it has a decent CPU and GPU, but high-density screens will cause lag, especially in Flash-based apps. I ran into the same problems when trying to move from the iPad 2 to the retina displays.
Let's look at it this way, with regards to the iPad issue I had. The iPad 3 bumped the resolution from 1024x768 to 2048x1536. That is 4x as many pixels. Traditionally, Flash has issues rendering vector images. It is good at it, among the best, but it is slow. So rendering a vector object on the iPad 2 was only a 40x40 area to update. On the iPad 3, it is a 160x160 area to update.
Quick tips:
Never use CPU rendering. Stick to Direct (or GPU if you need to, but you lose features with GPU rendering, such as filters)
Decrease the amount of vectors being used and how often you are changing them. You should avoid, at all costs, updating vector objects every frame.
Make sure you are testing a release build (In Flash Builders, Project->Export Release Build...) when testing framerate issues. It is generally much more evident on the iOS side than the Android side, but debug builds do cause lag
Don't set the framerate higher than you have to. As the framerate goes higher, each frame has less time to run the necessary calculations. The lag you notice isn't truly from low framerates (though that doesn't help), but more from dropped frames when a frame takes longer than available to render. 24 is the default, 30 is the standard. 60 is the max and is always nice, but it is completely unnecessary unless you are making a game.
I have several apps in production right now that run just fine on my Nexus 5, which is the same resolution as the S4 with roughly the same hardware, spec-wise. Unless there is a problem with that hardware specifically, you should be able to manage 30fps no problem, if not 60.
use direct render mode it is recommended by adobe.
I need to make a video as a demo for one application I have developed. I know that there are some experimental applications that use DDMS and achieve a framerate of 5-6 FPS. This framerate is completely insufficient for my purposes since the application has smooth animations that I would like to show. Is there a way to do a real-time screen capture on Android? Should I settle for a capture of the emulator or a real video done with a real camera?
Among the ready solutions, the one that provides the highest quality is beagle board or some other board with DVI or S-Video out. Second best is emulator.
Apparently, some phones provide TV video output. That seems to be the case of my Galaxy S i9000, which has a "TV Out" setting, providing video output via the Jack (TRRS) connector. Some HTC phones (Droid Incredible) may also support such video output. Then, all that is needed is a small S-Video acquisition card to capture the output.
I haven't tested that yet, but it is reported to work, and should allow to demo all features including multi-touch gestures, which could be hard to reproduce on a beagle board with a mouse plugged in... Plus, the phones have everything installed out of the box, that saves time.
EDIT - 19 Sep 2011:
Unfortunately, using the Samsung S GT-I9000 video output didn't provide good results. I purchased the specific Samsung video cable plus a Terratec G3 video acquisition USB adapter, and the results were not satisfying. The video was flickering, the image was of pretty bad quality, and it wasn't good enough for creating a demo of my app which relies on OpenGL.
So, I purchased a JVC GZ-HM435 camcorder, which records in HD, and that was a lot better. I was able to create a pretty nice video, with very acceptable quality, by positioning the camcorder appropriately using a proper stand. Also, this method better demonstrates the interactivity of the application, because one can see fingers, pinching and all that. It really shows how it works.