3gp video and AVPlayer in iPhone - ios

I have an iPhone application that plays the videos of Camera Roll using AVPlayer. I have a 3gp video in my iPhone which I am not able to play using AVPlayer but can be played in Photos app.
I would like to achieve these:
The videos that are not valid as per AVFoundation classes should not be listed in my views that shows Camera Roll videos using ALAsset Library.
Is there any API related to AVURLAsset, AVAssetTrack etc that identifies if the video is playable or not.
I have tried the following:
playable property of AVURLAsset says that it is playable.
The duration of this videos can be obtained

Related

AVAssetExportSession exportAsynchronouslyWithCompletionHandler: Source frame unsupported format

I am using AVAssetExportSession to export a video selected from library. It works great for all videos of all types except landscape-recorded screen recordings (using the screen recording feature in iOS 11). Weird enough, it works perfectly for other landscape videos, and it also works perfectly for portrait videos of the same screen recording feature. But I've tried two videos that are landscape screen recordings, and they both failed with the error Source frame unsupported format.
How can I fix this problem?
UPDATE: Videos play just fine both in Photos and in my app before exporting.
The video size may not be standard like 1920 X 1080 , The screen recording produce non standard video resolutions in some devices.
You need to write the videos in standard resolution while recording

Known issues for playing 3gp videos in the AVPlayer framework?

Are there any known issues with AVPlayer not playing a 3gp file on device? mp4 files play fine, but playing a 3gp file back from a URL on the device isn't happening.
Thanks!
If it matters I'm on iOS 9 Swift 3.
AVPlayer or AVPlayerViewController can play only 3gp files that have audio and video streams that are supported by Apple.
For example, 3gp file can have AMR audio stream(Adaptive Multi-Rate, a format for speech) - which is not supported since iOS 4.3

View uploaded video in iOS app

I have a bunch of videos uploaded to google drive. They are in mpeg4 (avi) format I believe. I have tried everything I can think to view the video in a MPMoviePlayerViewController. In the simulator the video player launches and looks like it playing, but I don't see any video. When I run it on my device the player won't launch. I have tried to use the downloadUrl, alternateLink, embedLink and webContentLink with no success.
Is it possible to stream video from Google Drive to iOS?
The simulator isn't a full blown emulator, but just a simulator. It uses similar frameworks from Mac OS, which may have different functionality than on iOS. In other words, the simulator may have more capabilities than an actual device.
The MPMoviePlayerController class on iOS supports only a few containers and codecs, and does not support AVI.
Supported Formats
This class plays any movie or audio file supported in iOS. This
includes both streamed content and fixed-length files. For movie
files, this typically means files with the extensions .mov, .mp4,
.mpv, and .3gp and using one of the following compression standards:
H.264 Baseline Profile Level 3.0 video, up to 640 x 480 at 30 fps. (The Baseline profile does not support B frames.)
MPEG-4 Part 2 video (Simple Profile)
If you use this class to play audio files, it displays a white screen
with a QuickTime logo while the audio plays. For audio files, this
class supports AAC-LC audio at up to 48 kHz, and MP3 (MPEG-1 Audio
Layer 3) up to 48 kHz, stereo audio.

What is the maximum video/movie resolution for iPad 3 (retina)?

For some reason, when I try to play a video that is 1536x2048 on the ipad 3, it doesn't play the video, it just skips it. I've checked that the URL for the video is correct. I'm using MPMoviePlayerController. I tried playing the same video on an ipad also and it does the same thing. It just acts like it ignored the "play" line of code.
Is there a maximum supported video resolution then?
According to MPMoviePlayerController reference I'd say that this can answer you:
Supported Formats
This class plays any movie or audio file supported in iOS. This includes both streamed content and fixed-length files. For movie files, this typically means files with the extensions .mov, .mp4, .mpv, and .3gp and using one of the following compression standards:
H.264 Baseline Profile Level 3.0 video, up to 640 x 480 at 30 fps. (The Baseline profile does not support B frames.)
MPEG-4 Part 2 video (Simple Profile)
If you use this class to play audio files, it displays a white screen with a QuickTime logo while the audio plays. For audio files, this class supports AAC-LC audio at up to 48 kHz, and MP3 (MPEG-1 Audio Layer 3) up to 48 kHz, stereo audio.

iOS thumbnail issue with saved video to camera roll

We have an issue where video generated by our application and saved to camera roll (from user action) will show as black thumbnail on the iOS Photo Gallery instead of a thumbnail of a frame. Once you select the video it will play without any issues on the iOS device or any other device (export to your mac or pc...).
The issue does not occur on the iPhone simulator, only on iOS devices..
We generate the video using AVFoundation (very similiar to this How do I export UIImage array as a movie?)
We then combine the video with an mp3 file using AVMutableVideoComposition. If I extract all frame of video, first frame is not black.
The thumbnail in the Photo Gallery will show as a black square, no time span (on iOS4) shown on the thumbnail. We save the video to camera roll using UISaveVideoAtPathToSavedPhotosAlbum ...
We have changed the video compression type and settings multiple times with no luck. The output is a H264 QuickTimeMovie.
Any ideas ?
Thank you.

Resources