Hi all,
The ExoPlayer is very wonderful and excellent and the app can play many different video fomat.
The most important is that the app writed by JAVA Code : )
But now .. I have one problem when play MPEG-TS video.
You can download the video in here
https://drive.google.com/open?id=0B4C7mA1uPAIaemZRa01Hdk12VFU
The TS video file can play in VLC player of android.
But I don't know why it can not play in ExoPlayer ..
This is TS format:
Video (AVC)
Audio (MPEG)
Modify file of media.exolist.json.
{
"name": "Misc",
"samples": [
{
"name": "CNS_h264_mp3.ts ",
"uri": "/storage/sdcard0/CNS.ts"
}
]
},
The ExoPlayer Source Code version:
Branch: release-v2
Commit:
commit 2bebd526e1ece801ef53e6daeaaee76b0255ec6d
Merge: 3ada4e1 1b64d62
Author: ojw28 olly@google.com
Date: Fri Jun 30 19:07:03 2017 +0100
Merge pull request #3009 from google/dev-v2-r2.4.3
r2.4.3
Android 4.3
Android 6.1
Android 7.1
07-18 16:45:38.829 428-439/system_process I/ActivityManager: START u0 {act=com.google.android.exoplayer.demo.action.VIEW dat=/storage/sdcard0/CNS.ts cmp=com.google.android.exoplayer2.demo/.PlayerActivity (has extras)} from pid 21327
--------- beginning of /dev/log/main
07-18 16:45:38.899 428-439/system_process D/dalvikvm: GC_FOR_ALLOC freed 791K, 22% free 12504K/15864K, paused 51ms, total 51ms
07-18 16:45:38.939 21327-21327/com.google.android.exoplayer2.demo I/ExoPlayerImpl: Init ExoPlayerLib/2.4.3 [grouper, AOSP on Grouper, unknown, 18]
07-18 16:45:38.939 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: state [0.00, true, I]
07-18 16:45:38.949 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: state [0.01, true, B]
07-18 16:45:38.949 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
07-18 16:45:38.949 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: period [?]
07-18 16:45:38.949 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: window [?, false, false]
07-18 16:45:38.949 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:38.949 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: loading [true]
07-18 16:45:39.049 428-446/system_process I/ActivityManager: Displayed com.google.android.exoplayer2.demo/.PlayerActivity: +136ms
07-18 16:45:39.249 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
07-18 16:45:39.249 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: period [?]
07-18 16:45:39.259 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: window [?, false, false]
07-18 16:45:39.259 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.269 21327-21757/com.google.android.exoplayer2.demo I/OMXClient: Using client-side OMX mux.
07-18 16:45:39.269 1676-1693/? D/NvOsDebugPrintf: NvxLiteH264DecoderInit : Opening TVMR H264 block
07-18 16:45:39.289 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: Tracks [
07-18 16:45:39.289 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: Renderer:0 [
07-18 16:45:39.289 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
07-18 16:45:39.289 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:0, id=344/6021, mimeType=video/avc, res=720x480, supported=YES
07-18 16:45:39.289 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.289 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: Renderer:1 [
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:0, id=344/6022, mimeType=audio/mpeg-L2, channels=2, sample_rate=48000, supported=YES
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: Renderer:2 [
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:0, id=344/14213, mimeType=application/cea-608, supported=YES
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: videoEnabled [0.37]
07-18 16:45:39.299 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: audioEnabled [0.37]
07-18 16:45:39.319 1676-21758/? D/NvOsDebugPrintf: NvMMLiteOpen : Block : BlockType = 261
07-18 16:45:39.319 1676-21758/? D/NvOsDebugPrintf: ++++++ NvAvpOpen +++++++
07-18 16:45:39.319 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: videoDecoderInitialized [0.38, OMX.Nvidia.h264.decode]
07-18 16:45:39.329 1676-21758/? D/NvOsDebugPrintf: NvMMLiteBlockCreate : Block : BlockType = 261
07-18 16:45:39.329 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: videoFormatChanged [0.39, id=344/6021, mimeType=video/avc, res=720x480]
07-18 16:45:39.329 1676-21761/? D/NvOsDebugPrintf: ++++++++++++ TVMRFrameDelivery +++++++++++++++
07-18 16:45:39.329 21327-21762/com.google.android.exoplayer2.demo I/OMXClient: Using client-side OMX mux.
07-18 16:45:39.339 1676-1693/? E/OMXNodeInstance: OMX_EnableAndroidNativeBuffers failed with error -2147479546 (0x80001006)
07-18 16:45:39.349 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: audioDecoderInitialized [0.42, OMX.Nvidia.mp2.decoder]
07-18 16:45:39.349 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: audioFormatChanged [0.42, id=344/6022, mimeType=audio/mpeg-L2, channels=2, sample_rate=48000]
07-18 16:45:39.419 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: audioSessionId [142]
07-18 16:45:40.229 21327-21748/com.google.android.exoplayer2.demo D/dalvikvm: GC_FOR_ALLOC freed 42882K, 78% free 12312K/55300K, paused 22ms, total 22ms
07-18 16:45:40.559 21327-21748/com.google.android.exoplayer2.demo D/dalvikvm: GC_FOR_ALLOC freed 201K, 75% free 14361K/55300K, paused 21ms, total 21ms
07-18 16:45:40.939 21327-21748/com.google.android.exoplayer2.demo W/PesReader: Unexpected start indicator: expected 920 more bytes
07-18 16:45:40.989 21327-21748/com.google.android.exoplayer2.demo D/dalvikvm: GC_FOR_ALLOC freed 3K, 69% free 17309K/55300K, paused 18ms, total 18ms
07-18 16:45:41.549 21327-21748/com.google.android.exoplayer2.demo D/dalvikvm: GC_FOR_ALLOC freed 73K, 62% free 21125K/55300K, paused 19ms, total 19ms
07-18 16:45:42.309 21327-21748/com.google.android.exoplayer2.demo D/dalvikvm: GC_FOR_ALLOC freed 111K, 53% free 26222K/55300K, paused 24ms, total 24ms
07-18 16:45:43.289 21327-21748/com.google.android.exoplayer2.demo D/dalvikvm: GC_FOR_ALLOC freed 146K, 41% free 32985K/55300K, paused 21ms, total 21ms
07-18 16:45:44.419 21327-21748/com.google.android.exoplayer2.demo D/dalvikvm: GC_FOR_ALLOC freed 179K, 26% free 40965K/55300K, paused 21ms, total 21ms
07-18 16:45:45.409 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
07-18 16:45:45.409 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: period [168.53]
07-18 16:45:45.409 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: window [168.53, false, false]
07-18 16:45:45.409 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: ]
07-18 16:45:45.409 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: loading [false]
07-18 16:45:45.429 21327-21327/com.google.android.exoplayer2.demo D/EventLogger: state [6.49, true, R]
Have you read this?
@ojw28
Thank you your reply
I modify some source codes according the article
Now the ExoPlayer can play TS Video ..
Although the video drop some frames when playing : (
But I still appreciate your help !
The same issue with HLS:
http://35.186.151.37/stream/vtvcab15/playlist.m3u8 (this one works fine with HLS.js in web)
07-20 04:31:14.591 25898-25898/com.google.android.exoplayer2.demo D/EventLogger: videoDecoderInitialized [0.82, OMX.google.h264.decoder]
07-20 04:31:14.591 25898-25898/com.google.android.exoplayer2.demo D/EventLogger: videoFormatChanged [0.82, id=1/27, mimeType=video/avc, res=1920x1080]
07-20 04:31:14.591 25898-25898/com.google.android.exoplayer2.demo D/EventLogger: audioDecoderInitialized [0.82, OMX.google.aac.decoder]
07-20 04:31:14.591 25898-25898/com.google.android.exoplayer2.demo D/EventLogger: audioFormatChanged [0.82, id=1/15, mimeType=audio/mp4a-latm, channels=2, sample_rate=48000]
I added this FLAG but still does not work :(
//line 360 in [HlsMediaChunk.java](https://github.com/google/ExoPlayer/blob/release-v2/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaChunk.java)
esReaderFactoryFlags |= DefaultTsPayloadReaderFactory.FLAG_ALLOW_NON_IDR_KEYFRAMES;
Hi, all , I get another problem that the play audio is failed in the same ts file but on the different android devices.
One devices is Asus Nexus 5 antoher is HTC Nexus 9.
The ExoPlayer can play very well in Asus Nexus 5.
In HTC Nexus 9, there is getting output of video , cannot get the output of audio.
It's means that I can see video but I can't hear any voice.... : (
This is the logcat message about ExoPlayer in HTC Nexus 9
07-20 17:16:58.035 648-1374/? I/ActivityManager: START u0 {act=com.google.android.exoplayer.demo.action.VIEW dat=/storage/emulated/0/CNS.ts cmp=com.google.android.exoplayer2.demo/.PlayerActivity (has extras)} from uid 10460 on display 0
--------- beginning of main
07-20 17:16:58.101 6179-6179/com.google.android.exoplayer2.demo I/ExoPlayerImpl: Init ExoPlayerLib/2.4.3 [flounder_lte, Nexus 9, htc, 24]
07-20 17:16:58.104 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: state [0.00, true, I]
07-20 17:16:58.119 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: state [0.02, true, B]
07-20 17:16:58.119 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
07-20 17:16:58.119 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: period [?]
07-20 17:16:58.119 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: window [?, false, false]
07-20 17:16:58.119 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.153 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: loading [true]
07-20 17:16:58.194 648-668/? I/ActivityManager: Displayed com.google.android.exoplayer2.demo/.PlayerActivity: +137ms
07-20 17:16:58.215 6179-6200/com.google.android.exoplayer2.demo D/OpenGLRenderer: endAllActiveAnimators on 0x7cc3fdf800 (ExpandableListView) with handle 0x7cb44291a0
07-20 17:16:58.440 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=1, windowCount=1
07-20 17:16:58.440 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: period [?]
07-20 17:16:58.440 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: window [?, false, false]
07-20 17:16:58.440 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: Tracks [
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: Renderer:0 [
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:0, id=344/6021, mimeType=video/avc, res=720x480, supported=YES
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: Renderer:1 [
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:0, id=344/6022, mimeType=audio/mpeg-L2, channels=2, sample_rate=48000, supported=NO_UNSUPPORTED_TYPE
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: Renderer:2 [
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: [ ] Track:0, id=344/14213, mimeType=application/cea-608, supported=YES
07-20 17:16:58.456 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.457 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.457 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: ]
07-20 17:16:58.457 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: videoEnabled [0.36]
07-20 17:16:58.457 270-270/? I/MediaPlayerService: MediaPlayerService::getOMX
07-20 17:16:58.460 6179-7468/com.google.android.exoplayer2.demo I/OMXClient: MuxOMX ctor
07-20 17:16:58.461 267-9201/? I/OMXMaster: makeComponentInstance(OMX.Nvidia.h264.decode) in mediacodec process
07-20 17:16:58.471 6179-7467/com.google.android.exoplayer2.demo I/MediaCodec: [OMX.Nvidia.h264.decode] setting surface generation to 6327300
07-20 17:16:58.476 267-9342/? E/OMXNodeInstance: getConfig(10b0049:Nvidia.h264.decode, ConfigCommonOutputCrop(0x700000f)) ERROR: BadParameter(0x80001005)
07-20 17:16:58.482 6179-7468/com.google.android.exoplayer2.demo D/SurfaceUtils: set up nativeWindow 0x7ccf0b9c10 for 720x480, color 0x106, rotation 0, usage 0x2b00
07-20 17:16:58.485 267-7469/? D/NvOsDebugPrintf: NvMMLiteOpen : Block : BlockType = 261
07-20 17:16:58.487 267-7469/? D/NvOsDebugPrintf: TVMR: NvMMLiteTVMRDecBlockOpen: 5008: NvMMLiteBlockOpen
07-20 17:16:58.498 267-7469/? D/NvOsDebugPrintf: NvMMLiteBlockCreate : Block : BlockType = 261
07-20 17:16:58.550 267-7471/? D/NvOsDebugPrintf: TVMR: cbBeginSequence: 655: BeginSequence 720x480, bVPR = 0
07-20 17:16:58.551 267-7471/? D/NvOsDebugPrintf: TVMR: cbBeginSequence: 918: DecodeBuffers = 7
07-20 17:16:58.554 267-7471/? D/NvOsDebugPrintf: TVMR: cbBeginSequence: 938: Display Resolution : (720x480)
07-20 17:16:58.554 267-7471/? D/NvOsDebugPrintf: TVMR: cbBeginSequence: 939: Display Aspect Ratio : (654x480)
07-20 17:16:58.560 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: videoDecoderInitialized [0.46, OMX.Nvidia.h264.decode]
07-20 17:16:58.560 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: videoFormatChanged [0.46, id=344/6021, mimeType=video/avc, res=720x480]
07-20 17:16:58.561 267-7471/? D/NvOsDebugPrintf: TVMR: cbBeginSequence: 1005: Layout 3: Interlaced Output Resolution : (768x480)
07-20 17:16:58.561 267-7471/? D/NvOsDebugPrintf: TVMR: InterlaceBufferAlloc !!!!!!!!!!!!!!!!!!!!!
07-20 17:16:58.564 267-7471/? D/NvOsDebugPrintf: TVMR: TVMRInit: 89: deinterlaceType = 1
07-20 17:16:58.582 648-2796/? I/WindowManager: Destroying surface Surface(name=com.google.android.exoplayer2.demo/com.google.android.exoplayer2.demo.SampleChooserActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.WindowManagerService.tryStartExitingAnimation:3017 com.android.server.wm.WindowManagerService.relayoutWindow:2897 com.android.server.wm.Session.relayout:215 android.view.IWindowSession$Stub.onTransact:286 com.android.server.wm.Session.onTransact:136
07-20 17:16:58.585 267-7471/? D/NvOsDebugPrintf: TVMR: cbBeginSequence: 1071: NumOfSurfaces = 4, InteraceStream = 1, InterlaceEnabled = 1, bSecure = 0, MVC = 0 Semiplanar = 1, bReinit = 1
07-20 17:16:58.585 267-7471/? D/NvOsDebugPrintf: Allocating new output: 768x480 (x 6), ThumbnailMode = 0
07-20 17:16:58.590 6179-7468/com.google.android.exoplayer2.demo D/SurfaceUtils: set up nativeWindow 0x7ccf0b9c10 for 768x480, color 0x106, rotation 0, usage 0x2b00
07-20 17:16:58.591 267-1058/? E/OMXNodeInstance: setParameter(10b0049:Nvidia.h264.decode, ParamPortDefinition(0x2000001)) ERROR: UnsupportedSetting(0x80001019)
07-20 17:16:58.591 6179-7468/com.google.android.exoplayer2.demo W/ACodec: [OMX.Nvidia.h264.decode] setting nBufferCountActual to 10 failed: -1010
07-20 17:16:58.591 267-9208/? E/OMXNodeInstance: setParameter(10b0049:Nvidia.h264.decode, ParamPortDefinition(0x2000001)) ERROR: UnsupportedSetting(0x80001019)
07-20 17:16:58.591 6179-7468/com.google.android.exoplayer2.demo W/ACodec: [OMX.Nvidia.h264.decode] setting nBufferCountActual to 9 failed: -1010
07-20 17:16:58.593 267-7473/? D/NvOsDebugPrintf: TVMR: DeinterlaceThread: 696: DeinterlaceThread is created
07-20 17:16:58.596 219-219/? W/SurfaceFlinger: couldn't log to binary event log: overflow.
07-20 17:16:58.658 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: renderedFirstFrame [Surface(name=null)/@0x3f46f9]
07-20 17:16:58.660 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: state [0.56, true, R]
07-20 17:16:59.026 6179-6179/com.google.android.exoplayer2.demo D/EventLogger: loading [false]
@mrjerometw, the link included by @ojw28 explains why audio is not rendered. Please see the section "Sample Formats". The provided logcat shows that the device does not include an audio/mpeg-L2 decoder.
@AquilesCanta
You are right !
I found some android devices don't support the audio/mepg-l2 in android media codec.