ts file not playing in android tablet - android

I am trying to play a file i have recorded. The file plays well in vlc(linux pc) and in Moboplayer(android tablet). While using the default player in the android tablet it shows this in logcat.
I/ActivityManager( 201): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.mymediaplayer/.MyVideoView bnds=[656,246][752,342]} from pid 417
I/System.out(20286): MyVideoView.onCreate()
I/System.out(20286): MyVideoView.onResume()
V/TabletStatusBar( 281): setLightsOn(true)
I/AwesomePlayer( 141): setDataSource_l('/sdcard/video/TunerOut.ts')
I/avc_utils( 141): found AVC codec config (720 x 480, Baseline-profile level 3.1)
I/MPEG2TSExtractor( 141): haveAudio=1, haveVideo=1
E/OMXCodec( 141): Attempting to allocate OMX node 'OMX.TI.DUCATI1.VIDEO.DECODER'
E/OMXCodec( 141): Attempting to allocate OMX node 'OMX.Nvidia.h264.decode'
E/OMXCodec( 141): Attempting to allocate OMX node 'OMX.qcom.7x30.video.decoder.avc'
E/OMXCodec( 141): Attempting to allocate OMX node 'OMX.qcom.video.decoder.avc'
E/OMXCodec( 141): Attempting to allocate OMX node 'OMX.TI.Video.Decoder'
E/OMXCodec( 141): Attempting to allocate OMX node 'OMX.SEC.AVC.Decoder'
E/OMXCodec( 141): Successfully allocated OMX node 'OMX.SEC.AVC.Decoder'
I/OMXCodec( 141): [OMX.SEC.AVC.Decoder] AVC profile = 66 (Baseline), level = 31
E/OMXCodec( 141): [OMX.SEC.AVC.Decoder] Video O/P format.eColorFormat 0x40b452b1
I/OMXCodec( 141): [OMX.SEC.AVC.Decoder] video dimensions are 720 x 480
D/OpenGLRenderer( 417): Flushing caches (mode 1)
I/ActivityManager( 201): Displayed com.example.mymediaplayer/.MyVideoView: +323ms
W/InputManagerService( 201): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy#4106dc38 (uid=10036 pid=20503)
W/IInputConnectionWrapper(20503): showStatusIcon on inactive InputConnection
E/OMXCodec( 141): Attempting to allocate OMX node 'OMX.Nvidia.mp2.decoder'
**E/MediaPlayer(20286): error (1, -2147483648)
E/MediaPlayer(20286): Error (1,-2147483648)
D/VideoView(20286): Error: 1,-2147483648**
D/OpenGLRenderer( 417): Flushing caches (mode 0)
W/InputManagerService( 201): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy#41033300
D/AudioHardware( 141): AudioHardware pcm playback is going to standby.
what is error 1,-2147483648

I just had that error too. The reason (in my case) was that the mp3 has the wrong format, i.e.
MPEG ADTS, layer II, v1, 192 kbps, 44.1 kHz, Stereo
while a "good" mp3 has this format:
MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo

Related

FCNT Arrows F-41B device appear Native Crash In libmedia_omx.so

I had an Native Crash In FCNT Arrows F-41B device. When I play Ad,This is follow error Stack
# CodecLooper(12543)
SIGSEGV(SEGV_MAPERR)
#00 pc 000000000001f2b4 /system/lib64/libmedia_omx.so (android::hardware::media::omx::V1_0::utils::LWOmxNode::freeNode()+52) [arm64-v8a::d6ca6ad0aa6b451025aea9b50df3a511]
#01 pc 000000000009cdc8 /system/lib64/libstagefright.so (android::ACodec::LoadedState::onShutdown(bool)+128) [arm64-v8a::3a0f159449aafa5318775893fbfa1be5]
3
java:
4
[Failed to get Java stack]`
Log printing before errors:
`12312-29 23:18:37.554 900 6264 E ACodec : signalError(omxError 0x80001001, internalError -2)
12412-29 23:18:37.554 900 6264 E ACodec : [c2.android.avc.decoder] configureCodec returning error -2
12512-29 23:18:37.554 900 6264 E ACodec : signalError(omxError 0x80001001, internalError -2)
12612-29 23:18:37.554 900 6263 E MediaCodec: Codec reported err 0xfffffffe, actionCode 0, while in state 3/CONFIGURING
12712-29 23:18:37.555 900 6263 D SurfaceUtils: disconnecting from surface 0xb40000709bb72c70, reason disconnectFromSurface
12812-29 23:18:37.555 900 6263 E MediaCodec: Codec reported err 0xfffffffe, actionCode 0, while in state 0/UNINITIALIZED
12912-29 23:18:37.555 900 2389 E MediaCodec: configure failed with err 0xfffffffe, resetting...
130--------- beginning of crash
13112-29 23:18:37.600 6268 6264 F libc : fdsan: attempted to close file descriptor 293, expected to be unowned, actually owned by unique_fd 0x6f2bbf50d4
13212-29 23:18:38.647 6270 6270 E chromium: [1229/231838.646784:ERROR:process_memory_range.cc(75)] read out of range
13412-29 23:18:39.369 900 900 I Choreographer: Skipped 101 frames! The application may be doing too much work on its main thread.
13912-29 23:18:39.389 900 6264 E npth : Native crash was detected!

Flutter, video_player I/ACodec codec does not support config priority (err -2147483648)

The videos are mp4. All other videos work fine, but weirdly, only certain videos come out this way.
I/ACodec (27533): codec does not support config priority (err -2147483648)
I was offered to change the audio codec while searching.
I tried encoding it with AAC, AC3, and MPEG but couldn't solve it. (I tried with each file)
It's really weird. The audio is a bit stuttering. It doesn't sound very annoying, but it certainly seems to be a bit cut off.
Does anyone know how to do this? Any advice would be appreciated. thank you.
I/ExoPlayerImpl( 8291): Init 6c53ea1 [ExoPlayerLib/2.12.1] [generic_x86_64, Android SDK built for x86_64, unknown, 24]
D/MetadataUtil( 8291): Skipped unknown metadata entry: ������
I/art ( 8291): Do partial code cache collection, code=25KB, data=24KB
I/art ( 8291): After code cache collection, code=23KB, data=23KB
I/art ( 8291): Increasing code cache capacity to 128KB
I/VideoCapabilities( 8291): Unsupported profile 4 for video/mp4v-es
I/OMXClient( 8291): MuxOMX ctor
I/MediaCodec( 8291): [OMX.google.h264.decoder] setting surface generation to 8489985
E/ACodec ( 8291): [OMX.google.h264.decoder] storeMetaDataInBuffers failed w/ err -1010
I/ACodec ( 8291): codec does not support config priority (err -2147483648)
I/ACodec ( 8291): codec does not support config operating rate (err -2147483648)
I/OMXClient( 8291): MuxOMX ctor
I/ACodec ( 8291): codec does not support config priority (err -2147483648)
D/AudioTrack( 8291): Client defaulted notificationFrames to 3675 for frameCount 11025
D/MediaCodec( 8291): [OMX.google.h264.decoder] setting dataspace on output surface to #104
D/ ( 8291): HostConnection::get() New Host Connection established 0x77a6caeb31c0, tid 8420
D/SoftwareRenderer( 8291): setting dataspace on output surface to #104
I/art ( 8291): Do partial code cache collection, code=61KB, data=59KB
I/art ( 8291): After code cache collection, code=58KB, data=57KB
I/art ( 8291): Increasing code cache capacity to 256KB

native_window_set_buffers_geometry failed

I am trying to develop a surveillance application in OMAP 4460(Blaze Tablet-in ICS) acting as client device rendering the surveillance feed from a remote source. To begin with, surveillance feed is streamed remotely from the camera and port forwarded as RTP packets which are received and rendered in OMAP 4460 through a customized RTP stack. While rendering, I am getting the following error from the decoder, saying that "Surface Texture has been abandoned and native_window _set_buffers_geometry failed", more frequently.
Following is the log captured:
E/AwesomePlayer( 131): AwesomePlayer::onPrepareAsyncEvent-------- err = 0
E/AwesomePlayer( 131): AwesomePlayer::onPrepareAsyncEvent-------- OK = -430191887
I/OMXCodec( 131): [OMX.TI.DUCATI1.VIDEO.DECODER] AVC profile = 66 (Baseline), level = 31
E/OMXCodec( 131): set buffer size variable to : 307200
I/OMXCodec( 131): [OMX.TI.DUCATI1.VIDEO.DECODER] video dimensions are 640 x 480
I/OMXCodec( 131): [OMX.TI.DUCATI1.VIDEO.DECODER] Crop rect is 640 x 480 # (0, 0)
E/SurfaceTexture( 128): [SurfaceView] setCrop: SurfaceTexture has been abandoned!
E/SurfaceTextureClient( 131): ISurfaceTexture::setCrop(...) returned No such device
E/SurfaceTexture( 128): [SurfaceView] setLayout: SurfaceTexture has been abandoned!
E/SurfaceTexture( 128): [SurfaceView] setCrop: SurfaceTexture has been abandoned!
E/SurfaceTextureClient( 131): ISurfaceTexture::setCrop(...) returned No such device
E/OMXCodec( 131): native_window_set_buffers_geometry failed: No such device (19)
E/ion ( 131): ioctl -1073460991 failed with code -1: Bad file number
E/ion ( 131): ioctl -1073460991 failed with code -1: Bad file number
D/DOMX ( 131): hardware/ti/domx/domx/omx_proxy_common/src/omx_proxy_common.c:2208 PROXY_ComponentDeInit()
D/DOMX ( 131): ERROR: failed check:(eError == OMX_ErrorNone) || (eError == OMX_ErrorNoMore) - returning error: 0x80001011 - Error returned from OMX API in ducati
D/DOMX ( 131): hardware/ti/domx/omx_core/src/OMX_Core.c:396 OMX_FreeHandle()
D/DOMX ( 131): ERROR: Error From ComponentDeInit..
D/StackInterface( 131): AwesomePlayer::reset_l called ++
SDP of the camera:
v=0
o=StreamingServer 3331435948 1116907222000 IN IP4 192.168.1.102
s=h264.mp4
c=IN IP4 239.0.0.00;/1
t=0 0
a=control:*
m=video 0 RTP/AVP 96
a=control:trackID=0
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0KAH9oCgPSbgIEAmBAAfQAAEZQve+Eg,aM48gA==
m=application 0 RTP/AVP 107
a=control:trackID=2
a=rtpmap:107 vnd.onvif.metadata/90000
I have been trying to fix this issue for sometime now, and could not able to find out the problem yet.
Kindly, reveal how to proceed further on the issue.
Regards,
Manoj
My English is not good.
Check SurfaceTexture pointer.
If you define sp<.....> in function, sp<.....> is abandoned with end of function.

Android MediaPlayer error (1, -2147483648)

I have two different videos which I'm trying to load into a VideoView using
videoView.setVideoURI(Uri.parse(url));
The two videos, let them be video 1 and video 2, have the following specs (extracted using ffmpeg -i); in fact, they are two different encodings of the same video:
Video 1:
Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 90000.00 (180000/2)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4fbfd5ece4b0932236fc234d.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
creation_time : 2011-12-03 04:43:46
genre : Trailer
artist : Paramount Pictures
title : Captain America: The First Avenger - Theatrical Trailer #2
encoder : HandBrake 4344svn 2011111001
date : 2011
Duration: 00:02:30.67, start: 0.000000, bitrate: 6738 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 1920x800 [PAR 1:1 DAR 12:5], 6575 kb/s, 23.97 fps, 90k tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2011-12-03 04:43:46
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 159 kb/s
Metadata:
creation_time : 2011-12-03 04:43:46
Video 2:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '500416ea44aeb4b95d5ae8a0_hd.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2011-12-03 04:43:46
title : Captain America: The First Avenger - Theatrical Trailer #2
artist : Paramount Pictures
date : 2011
encoder : Lavf53.32.100
genre : Trailer
Duration: 00:02:30.69, start: 0.000000, bitrate: 2045 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720 [PAR 27:20 DAR 12:5], 1889 kb/s, 23.99 fps, 90k tbr, 180k tbn, 180k tbc
Metadata:
creation_time : 2011-12-03 04:43:46
Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16, 151 kb/s
Metadata:
creation_time : 2011-12-03 04:43:46
I am aware that AAC support came with Honeycomb, and therefore I tested the videos with several devices; the results are given below:
SGS II with custom 4.0.3 OS(Sensation ROM 3.4 with CF-Root kernel) - Video 1:OK - Video2:OK
SGS I with Samsung 2.3.3 OS - Video 1:error (1, -2147483648) - Video 2:OK
SGS I with custom 4.0.3 OS(ICS SGS TEAM ROM with Devil kernel) - Video 1:error (1, -2147483648) - Video 2:OK
Nexus One with original 2.3.6 OS - Video 1:See (1) below - Video 2:See (2) below
Emulator with 2.2 OS - Video 1:error (1, -2147483648) - Video 2:error (1, -2147483648)
Emulator with 4.0.3 OS - Video 1:error (1, -2147483648) - Video 2:error (1, -2147483648)
Both videos play fine in Google Chrome in a PC. It might be useful to add that in the OK case, video and audio both play correctly. In the error (1, -2147483648) case, the same log is spewed from all devices (except Nexus One):
07-18 10:25:10.996: I/MediaPlayer(17860): uri is:http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4
07-18 10:25:10.996: I/MediaPlayer(17860): path is null
07-18 10:25:10.996: D/MediaPlayer(17860): Couldn't open file on client side, trying server side
07-18 10:25:39.859: D/MediaPlayer(17860): getMetadata
07-18 10:25:45.070: E/MediaPlayer(17860): error (1, -2147483648)
07-18 10:25:45.074: E/MediaPlayer(17860): Error (1,-2147483648)
07-18 10:25:45.078: D/VideoView(17860): Error: 1,-2147483648
In the (1) case, the following log is spewed from Nexus One, and the video never loads:
07-18 13:49:20.115: D/MediaPlayer(10109): Couldn't open file on client side, trying server side
07-18 13:49:20.115: I/StagefrightPlayer(68): setDataSource('http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4')
07-18 13:49:20.135: I/NuHTTPDataSource(68): connect to s3-eu-west-1.amazonaws.com:80/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4 #0
07-18 13:49:20.155: I/ActivityManager(98): Displayed com.woisio/.video.VideoActivity: +450ms
07-18 13:49:20.795: I/NuCachedSource2(68): Keep alive
07-18 13:49:22.185: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 4 buffers of size 460800 on input port
07-18 13:49:22.195: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 8 buffers of size 2304000 on output port
07-18 13:49:25.325: D/dalvikvm(9499): GC_EXPLICIT freed 13K, 50% free 2726K/5379K, external 1625K/2137K, paused 116ms
07-18 13:49:27.525: I/NuCachedSource2(68): Keep alive
07-18 13:49:28.235: I/NuCachedSource2(68): Cache full, done prefetching for now
07-18 13:49:30.275: D/dalvikvm(9902): GC_EXPLICIT freed 8K, 50% free 2714K/5379K, external 1625K/2137K, paused 69ms
07-18 13:49:34.255: D/Finsky(9066): [1] 5.onFinished: Installation state replication succeeded.
07-18 13:49:35.855: I/NuCachedSource2(68): Keep alive
07-18 13:49:39.055: D/dalvikvm(9911): GC_EXPLICIT freed 22K, 50% free 2710K/5379K, external 1625K/2137K, paused 38ms
07-18 13:49:42.575: I/NuCachedSource2(68): Keep alive
07-18 13:49:43.285: I/NuCachedSource2(68): Keep alive
07-18 13:49:44.095: D/dalvikvm(9918): GC_EXPLICIT freed 7K, 50% free 2708K/5379K, external 1625K/2137K, paused 66ms
07-18 13:49:49.085: D/dalvikvm(9925): GC_EXPLICIT freed 15K, 49% free 3268K/6407K, external 1625K/2137K, paused 50ms
07-18 13:49:50.925: I/NuCachedSource2(68): Keep alive
07-18 13:49:54.115: D/dalvikvm(6756): GC_EXPLICIT freed 9K, 44% free 3774K/6727K, external 1625K/2137K, paused 77ms
07-18 13:49:57.685: I/NuCachedSource2(68): Keep alive
07-18 13:49:58.375: I/NuCachedSource2(68): Keep alive
07-18 13:49:59.105: D/dalvikvm(9066): GC_EXPLICIT freed 385K, 53% free 3186K/6727K, external 1625K/2137K, paused 66ms
07-18 13:50:05.955: I/NuCachedSource2(68): Keep alive
07-18 13:50:06.045: D/dalvikvm(8047): GC_EXPLICIT freed 9K, 47% free 3830K/7111K, external 1625K/2137K, paused 86ms
07-18 13:50:09.465: I/3gw.Service(488): Mobile Network not connected - not roaming
07-18 13:50:12.765: I/NuCachedSource2(68): Keep alive
07-18 13:50:13.465: I/NuCachedSource2(68): Keep alive
07-18 13:50:18.775: I/WindowManager(98): Setting rotation to 3, animFlags=0
07-18 13:50:18.795: I/ActivityManager(98): Config changed: { scale=1.0 imsi=286/2 loc=en_US touch=3 keys=1/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=34}
07-18 13:50:18.895: D/dalvikvm(169): GC_EXTERNAL_ALLOC freed 108K, 48% free 3253K/6215K, external 5172K/5180K, paused 37ms
07-18 13:50:21.005: I/NuCachedSource2(68): Keep alive
07-18 13:50:21.265: D/dalvikvm(98): GC_EXPLICIT freed 394K, 42% free 6631K/11335K, external 4458K/5567K, paused 109ms
In the (2) case, the following log is spewed from Nexus One and as you can see, ends with an error (1, -2147483648):
07-18 13:47:03.595: D/MediaPlayer(10059): Couldn't open file on client side, trying server side
07-18 13:47:03.595: I/StagefrightPlayer(68): setDataSource('http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4ff4514444aec3d2f9f07ead/500416ea44aeb4b95d5ae8a0_hd.mp4')
07-18 13:47:03.605: I/NuHTTPDataSource(68): connect to s3-eu-west-1.amazonaws.com:80/cf-templates-k6ohn88yswx5-eu-west-1/videos/4ff4514444aec3d2f9f07ead/500416ea44aeb4b95d5ae8a0_hd.mp4 #0
07-18 13:47:03.625: I/ActivityManager(98): Displayed com.woisio/.video.VideoActivity: +505ms
07-18 13:47:05.355: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 4 buffers of size 460800 on input port
07-18 13:47:05.355: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 8 buffers of size 1382400 on output port
07-18 13:47:05.365: I/NuCachedSource2(68): Keep alive
07-18 13:47:08.375: D/MediaPlayer(10059): getMetadata
07-18 13:47:08.745: D/dalvikvm(9925): GC_EXPLICIT freed 651K, 49% free 3275K/6407K, external 1625K/2137K, paused 68ms
07-18 13:47:09.205: I/3gw.Service(488): Mobile Network not connected - not roaming
07-18 13:47:11.565: I/NuCachedSource2(68): Cache full, done prefetching for now
07-18 13:47:12.095: I/NuCachedSource2(68): Keep alive
07-18 13:47:14.245: W/QCvdec(68): H264_Utils::check_header
07-18 13:47:14.245: W/QCvdec(68): check_header: start code 33
07-18 13:47:14.245: W/QCvdec(68): H264_Utils::check_header
07-18 13:47:14.245: W/QCvdec(68): check_header: start code 10
07-18 13:47:14.245: W/QCvdec(68): Parsing Error unsupported profile or level
07-18 13:47:14.245: W/QCvdec(68): ETB in Invalid State
07-18 13:47:14.245: E/OMXCodec(68): [OMX.qcom.video.decoder.avc] ERROR(0x8000100a, 0)
07-18 13:47:14.245: E/MediaPlayer(10059): error (1, -2147483648)
07-18 13:47:14.285: E/MediaPlayer(10059): Error (1,-2147483648)
07-18 13:47:14.285: D/VideoView(10059): Error: 1,-2147483648
From what I have read, the error (1, -2147483648) may correspond to unsupported codecs, corrupt metadata or incorrect file headers. If it is so, could you point me in the right direction as to use which codec? Thanks.
Just to clarify something for anyone reading this question based on the title.
When looking at the error value (1, -2147483648), the '1' value corresponds to the constant in MediaPlayer.MEDIA_ERROR_UNKNOWN.
-2147483648 corresponds to hexadecimal 0x80000000 which is defined as UNKNOWN_ERROR in frameworks/native/include/utils/Errors.h
This shows that the error's source is hard to pin down as it is quite a generic return value, thrown by codec and compatibility issues as mentioned above but also thread cancellations and several other types.
For your issue, I would recommend consulting the Android Supported Media Formats with compatible Android versions and see if the encoding type is the cause of your problem, but as mentioned above the Unknown Error response can be caused by a number of problems.
I was facing the same error on Android P (Pixel 2 XL), but all I had to do was put android:usesCleartextTraffic="true" on my AndroidManifest.xml application tag.
For streaming, the Android site has a note:
For 3GPP and MPEG-4 containers, the moov atom must precede any mdat
atoms, but must succeed the ftyp atom.
I got the same error before moving the moov atom. In order to fix this, you can use mp4Box with this command:
MP4Box -hint output.mp4
Most of my videos can stream after that. If it does not work, try this with ffmpeg:
ffmpeg -i input.flv -f mp4 -vcodec libx264 -vprofile baseline -acodec libfaac -ar 16k -ab 32k output.mp4
MP4Box -hint output.mp4
There are other tools you can find here.
I am also getting same MEDIA_ERROR_UNKNOWN error issue for playing video(rtsp).
In my case I am finding issue with my wifi. Some security reasons wifi is restricted for RTSP protocol. So that I'm facing this MEDIA_ERROR_UNKNOWN error issue. Once check with your network permissions.
When I am moving to mobile data for playing video it's working fine for me.
May be this will be helpful whoever facing same kind of error :).
Take care of the support media type and resolution of your device.
Error error (1, -2147483648) often, appear when your video media type, codecs, or resolution is not supported by your device.
Checkout the media type supported by Android in the documentation :
https://developer.android.com/guide/appendix/media-formats.html
For example, we can notice that device above 3.0 support .mp4, but not all of them support HD 720p.
If you are using MediaPlayer for playing audio, this was the case of error for me:
When performing .setDataSource() the argument I passed was a string with path to the given file. This results in all kind of exceptions I havent been able to find particular reasons for. However, when changed to FileDescriptor, according to Android Developers - .setDataSource() method, its sorted out.
I am getting the FileDescriptor object from FileInputStream.
Here is the code:
val player: MediaPlayer = MediaPlayer()
fun playRecording() {
try {
replayFileStream = FileInputStream(path)
val fd = replayFileStream?.fd
player.setDataSource(fd)
player.prepareAsync()
// start should be called from onPreparedListener
} catch (e: Exception) {
// catch exceptions
}
}
The actual start of the playback is handled in OnPreparedListener as suggested for example here: Android Media Player: Start called in state 4 error(-38,0)
.
The listener setup is following:
player.setOnPreparedListener(object: MediaPlayer.OnPreparedListener {
override fun onPrepared(player:MediaPlayer) {
player.start()
}
})
android kotlin mediaplayer
I had a similar issue. In my case the video would play fine when I downloaded it to the phone first and then played it. But when I tried to use Progressive HTTP I would get the same error noted in the OP.
I verified that the ftyp, moov and mdat atoms were in the correct order. It turned out that the problem was the the value of the ftyp field. It was set to 'qt '. I used MP4Box to extract the tracks and create a new mp4 file which had the ftyp set to 'isom'. This new file worked fine for Progressive HTTP.
I resolved this similarly to the way stated in #nam-trung's answer, however as my videos were already h264 and mp4 all I needed to do was run the following on each file:
ffmpeg -i input.mp4 -vprofile baseline output.mp4
After that, the videos all worked in VideoView when run on all devices I've tested on running API v19 through v25.
In my case the error was due to the mediaplayer not having file permissions on the locally stored video. Try storing the video onto the /mnt/sdCARD directory.
I was facing the same issue ,But what i did on my side is
Firstly i stop the media player and then Released it.
mMediaPlayer.stop();
mMediaPlayer.release();
In my case, I had Gzip Compression on the web address where the url info is. Compressed media files may not be decoded on android.
In my case, this problem was caused by a media URL with spaces! Here is the fix:
mMediaPlayer.setDataSource(source.replaceAll(" ", "%20"));
if you are using firebase , then you should copy the path(or url) from 1: Download Url which contains the https://firebasestorage.............
not from the storage location
2 : <uses-permission android:name="android.permission.INTERNET" />add this permission in manifest tag inside manifest folder
inside Rules of storage
inside Rules of storage :
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
}

Can't play mp4 video in my Android app

I very want to play mp4 video in my android app. I even wrote a bit of code for it:
String sourceUrl = "http://tvstream.cn.ru/storage/1kanal/20120530/"
+ "1kanal-20120530-01-14-00-20120530-03-16-00.mp4";
final VideoView videoView = (VideoView) findViewById(R.id.videoView);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
final MediaController mediaController = new MediaController(this);
mediaController.setMediaPlayer(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoURI(Uri.parse(sourceUrl));
videoView.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
videoView.requestFocus();
videoView.start();
mediaController.show();
}
});
But nothing works :( When I launch my app in emulator (Android 2.3.3) I've got weird stacktrace with some common error codes:
After few hours off googling and experiments I decided to try to launch my app on real device and watch logcat:
D/test.tv.activity.PlayerActivity( 3428): Player source: http://tvstream.cn.ru/storage/1kanal/20120530/1kanal-20120530-01-14-00-20120530-03-16-00.mp4
D/VideoView( 3428): onMeasure()
I/VideoView( 3428): Setting size: 320x430
I/Launcher( 260): onWindowFocusChanged(false)
D/Launcher( 260): setWallpaperDimension() called
D/Launcher( 260): USE_NON_SCROLLABLE_IMAGE_WALLPAPER is true
I/ActivityManager( 163): Start proc org.reactivephone for broadcast org.reactivephone/ru.yandex.common.clid.ClidBroadcastReceiver: pid=3448 uid=10073 gids={1015, 3003}
I/ActivityManager( 163): No longer want com.sec.android.provider.badge (pid 2310): hidden #16
I/MediaPlayer( 3428): uri is:http://tvstream.cn.ru/storage/1kanal/20120530/1kanal-20120530-01-14-00-20120530-03-16-00.mp4
I/MediaPlayer( 3428): path is null
D/MediaPlayer( 3428): Couldn't open file on client side, trying server side
D/Launcher( 260): It's image wallpaper. suggestDesiredDimensions(-1,-1)
I/ActivityManager( 163): Displayed test.tv/.activity.PlayerActivity: +943ms
D/VideoView( 3428): onMeasure()
I/VideoView( 3428): Setting size: 320x430
W/dalvikvm( 3406): threadid=5: spin on suspend #1 threadid=22 (pcf=0)
W/dalvikvm( 3406): threadid=5: spin on suspend resolved in 1154 msec
W/SearchableInfo( 163): Invalid searchable metadata for org.reactivephone/.ui.RegionForm: Search label must be a resource reference.
I/ActivityManager( 163): Start proc com.google.android.googlequicksearchbox for broadcast com.google.android.googlequicksearchbox/.SourceUpdateReceiver: pid=3457 uid=10027 gids={3003}
I/WindowOrientationListener( 163): orientation 295.6932 gives new rotation = 2
I/OrientationDebug( 163): [pwm] in MyOrientationListener.onOrientationChanged() rotation=3 mFancyRotationAnimation=0 now call mWindowManager.setRotation()
I/OrientationDebug( 163): [wms] in setRotation() rotation=3 alwaysSendConfiguration=false animFlags=0
I/OrientationDebug( 163): [wms] in setRotation() now call setRotationUnchecked()
I/WindowManager( 163): Setting rotation to 3, animFlags=0
I/ActivityManager( 163): Config changed: { scale=1.0 imsi=250/1 loc=ru_RU touch=3 keys=1/1/2 nav=1/1 orien=2 layout=18 uiMode=17 seq=7}
D/PhoneApp( 241): updateProximitySensorMode: lock already released.
I/ActivityThread( 3457): Pub com.google.android.googlequicksearchbox.shortcuts: com.google.android.googlequicksearchbox.WebHistoryProvider
I/ActivityThread( 3457): Pub com.google.android.googlequicksearchbox.google: com.google.android.googlequicksearchbox.google.GoogleSuggestionProvider
I/ActivityManager( 163): No longer want com.sec.android.widgetapp.clockweather.clockwidget (pid 1214): hidden #16
D/Finsky ( 3406): [1] 2.run: Loaded library for account: [Y091GklnFtI4Ab1gmLOw-nJkJXQ]
D/Finsky ( 3406): [1] 2.run: Finished loading 1 libraries.
W/dalvikvm( 3406): VFY: unable to resolve instance field 78
D/DfeApi ( 3406): [1] DfeApiContext.getSmallestScreenWidthDp: smallestScreenWidthDp does not exist, using pre-ics hack.
E/QCvdec ( 95): Setparameter: unknown param 2130706451
W/TimedEventQueue( 95): Event 3 was not found in the queue, already cancelled?
E/QCvdec ( 95): Omx Flush issued when vdec is not initialized yet.
W/QCvdec ( 95): ======================================================================
W/QCvdec ( 95): Open Max Statistics
W/QCvdec ( 95): ======================================================================
W/QCvdec ( 95): empty this buffer rate = NaN
W/QCvdec ( 95): empty this buffer total time = 0
W/QCvdec ( 95): empty this buffer count = 0
W/QCvdec ( 95): ======================================================================
D/test.tv.activity.PlayerActivity( 3428): Player source: http://tvstream.cn.ru/storage/1kanal/20120530/1kanal-20120530-01-14-00-20120530-03-16-00.mp4
D/VideoView( 3428): onMeasure()
I/VideoView( 3428): Setting size: 480x270
I/MediaPlayer( 3428): uri is:http://tvstream.cn.ru/storage/1kanal/20120530/1kanal-20120530-01-14-00-20120530-03-16-00.mp4
I/MediaPlayer( 3428): path is null
D/MediaPlayer( 3428): Couldn't open file on client side, trying server side
D/VideoView( 3428): onMeasure()
I/VideoView( 3428): Setting size: 480x270
D/WifiService( 163): [mPersistState] : On
D/BatteryService( 163): update start
D/BatteryService( 163): update start
D/BatteryService( 163): update start
E/QCvdec ( 95): Setparameter: unknown param 2130706451
I/VideoView( 3428): start()
D/WifiService( 163): [mPersistState] : On
D/WifiService( 163): [mPersistState] : On
D/WifiWatchdogService( 163): (android.server.ServerThread) wntk (1c:af:f7:2e:7f:c8) does not require the watchdog
E/QCvdec ( 95): Unsupported profile, level, or widht, height
E/QCvdec ( 95): Unsupported clip
E/QCvdec ( 95): Unsupported profile, level, or widht, height
E/QCvdec ( 95): Unsupported clip
E/QCvdec ( 95): Omx Flush issued when vdec is not initialized yet.
E/QCvdec ( 95): Omx Flush issued when vdec is not initialized yet.
E/QCvdec ( 95): Empty this buffer in Invalid State
E/OMXCodec( 95): [OMX.qcom.video.decoder.avc] ERROR(0x8000100a, 0)
E/OMXCodec( 95): [OMX.qcom.video.decoder.avc] ERROR(0x8000100a, 0)
E/OMXCodec( 95): read : mState[9] is wrong...
E/MediaPlayer( 3428): error (1, -2147483648)
E/OMXCodec( 95): [OMX.qcom.video.decoder.avc] ERROR(0x8000100a, 0)
E/QCvdec ( 95): Omx Flush issued when vdec is not initialized yet.
D/VideoView( 3428): onMeasure()
I/VideoView( 3428): Setting size: 335x270
I/VideoView( 3428): start()
E/MediaPlayer( 3428): start called in state 0
E/MediaPlayer( 3428): error (-38, 0)
E/MediaPlayer( 3428): Error (1,-2147483648)
D/VideoView( 3428): Error: 1,-2147483648
E/MediaPlayer( 3428): Error (-38,0)
D/VideoView( 3428): Error: -38,0
D/PowerManagerService( 163): reactivateScreenLocksLocked mProxIgnoredBecauseScreenTurnedOff=false
I/PowerManagerService( 163): Ulight 1->3|0
W/InputManagerService( 163): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy#40873ab8
I/PowerManagerService( 163): Light Animator Finished curIntValue=141
D/Finsky ( 3406): [1] 5.onFinished: Installation state replication succeeded.
D/BatteryService( 163): update start
D/BatteryService( 163): update start
D/BatteryService( 163): update start
I try to find something about "OMX.qcom.video.decoder.avc] ERROR(0x8000100a, 0)", but didn't find nothing interesting. About "Couldn't open file on client side, trying server side" problem stackoverflow has many answers, but no one helped.
When I launch this app on ICS (in emulator) I've got similar errors:
06-01 10:22:14.674: I/NuCachedSource2(37): ERROR_END_OF_STREAM
06-01 10:22:15.375: I/OMXCodec(37): [OMX.google.h264.decoder] AVC profile = 100 (High), level = 30
06-01 10:22:15.384: I/OMXCodec(37): [OMX.google.h264.decoder] video dimensions are 320 x 240
06-01 10:22:15.384: I/OMXCodec(37): [OMX.google.h264.decoder] Crop rect is 320 x 240 # (0, 0)
06-01 10:22:16.253: W/NetworkManagementSocketTagger(89): setKernelCountSet(10013, 0) failed with errno -2
06-01 10:22:16.374: I/Launcher(553): setLoadOnResume
06-01 10:22:16.584: D/MediaPlayer(602): getMetadata
06-01 10:22:16.614: I/NuCachedSource2(37): new range: offset= 0
06-01 10:22:16.694: I/ChromiumHTTPDataSource(37): connect to http://tvstream.cn.ru/storage/1kanal/20120530/1kanal-20120530-01-14-00-20120530-03-16-00.mp4 #0
06-01 10:22:16.834: E/SoftAVC(37): Decoder failed: -2
06-01 10:22:16.844: E/OMXCodec(37): [OMX.google.h264.decoder] ERROR(0x80001001, -1007)
06-01 10:22:16.884: D/AudioSink(37): bufferCount (4) is too small and increased to 12
As I know, Android supports playback of video decoded with h264 (http://developer.android.com/guide/appendix/media-formats.html). So, can anyone tell me what I do wrong.
Probably your file is using an unsupported profile, notice that official media formats page only lists Baseline Profile as supported for H.264 AVC.
Try transcoding the video specifying Baseline Profile as suggested in this stackoverflow question, i.e. if your container is MP4 run:
ffmpeg -i yourfile.mp4 -c:v libx264 -profile:v baseline -level 1 yourfile_BaselineProfile.mp4
If this works it's not a issue in your code, you just have to use supported formats.
Try this
File clip=new File(Environment.getExternalStorageDirectory(),
"test.mp4");
if (clip.exists()) {
video=(VideoView)findViewById(R.id.video);
video.setVideoPath(clip.getAbsolutePath());
ctlr=new MediaController(this);
ctlr.setMediaPlayer(video);
video.setMediaController(ctlr);
video.requestFocus();
video.start();
VideoView classes does not allow playing MP4 file format videos. Please go through this link for Android Media Formats. Try checking your video with Daroon Player

Categories

Resources