Open MohsenNaderzadeh opened 1 year ago
Hi @MohsenNaderzadeh,
Did you try to reproduce the issue with the demo app? If the problem happens on the demo app, could you please provide us the media so that we can investigate on our end?
Thanks!
i have same issue
def exoplayer_version = "2.18.7"
implementation "com.google.android.exoplayer:exoplayer-core:${exoplayer_version}"
implementation "com.google.android.exoplayer:exoplayer-hls:${exoplayer_version}"
implementation "com.google.android.exoplayer:exoplayer-dash:${exoplayer_version}"
implementation "com.google.android.exoplayer:exoplayer-smoothstreaming:${exoplayer_version}"
E/ExoPlayerImplInternal( 4684): Playback error
E/ExoPlayerImplInternal( 4684): com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal( 4684): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:644)
E/ExoPlayerImplInternal( 4684): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:614)
E/ExoPlayerImplInternal( 4684): at android.os.Handler.dispatchMessage(Handler.java:106)
E/ExoPlayerImplInternal( 4684): at android.os.Looper.loop(Looper.java:219)
E/ExoPlayerImplInternal( 4684): at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal( 4684): Caused by: com.google.android.exoplayer2.ParserException: Invalid NAL length
E/ExoPlayerImplInternal( 4684): at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:641)
E/ExoPlayerImplInternal( 4684): at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:259)
E/ExoPlayerImplInternal( 4684): at com.google.android.exoplayer2.source.BundledExtractorsAdapter.read(BundledExtractorsAdapter.java:127)
E/ExoPlayerImplInternal( 4684): at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1039)
E/ExoPlayerImplInternal( 4684): at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
E/ExoPlayerImplInternal( 4684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal( 4684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal( 4684): at java.lang.Thread.run(Thread.java:929)
Hi @tianyif, My video is encrypted with the encryption algorithm as I said, Can I play it with the demo app? Is it possible?
If you've written a custom DataSource
I recommend testing it with a subclass of DataSourceContractTest
to check you implemented the interface correctly and fully. More info here: https://medium.com/google-exoplayer/standardising-datasource-implementations-through-testing-b7a8ab04f8d1
From the description (seeking breaks things) it sounds like possibly your implementation doesn't handle being closed and re-opened? Bit of a guess.
Hi @icbaker, I added DefaultHttpDataSourceContractTes
t as a test subclass of DataSourceContractTest
. As a part of the test, I passed Exoplayer's own DefaultHttpDataSource
as an implementation of the createDataSource
function. All of the tests passed except for two that are related to Mockito
and unit testing. I am currently unable to resolve these errors and run the test class successfully. Once I have resolved these issues and successfully run the test class, I will proceed to test my own custom data source. Please keep my issue open until I have resolved the errors and run the test class successfully.
Not sure if you've already seen it, but you might want to take a look at our DefaultHttpDataSourceContractTest
and the HttpDataSourceTestEnv
it uses to set up serving test data at various URLs using Square's MockWebServer
.
I hava same issue i use Encrypt with “AES/CBC/PKCS5Padding”
I am playing a local encrypted video. after setting the video resource, sliding the progress bar to set the playback progress(player.seekTo ) will cause an exception: CCodecBuffers: [c2.android.aac.decoder#819:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 0 CCodecBuffers: [c2.android.aac.decoder#819:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 1 CCodecBuffers: [c2.android.aac.decoder#819:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 2 CCodecBuffers: [c2.android.aac.decoder#819:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 3 ExoPlayerImplInternal: Playback error com.google.android.exoplayer2.ExoPlaybackException: Source error at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:684) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:654) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:219) at android.os.HandlerThread.run(HandlerThread.java:67) Caused by: com.google.android.exoplayer2.ParserException: Invalid NAL length{contentIsMalformed=true, dataType=1} at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:654) at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:266) at com.google.android.exoplayer2.source.BundledExtractorsAdapter.read(BundledExtractorsAdapter.java:133) at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1047) at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:420) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:929)
when the encrypted video is played to the last frame, the output error: BufferPoolAccessor: bufferpool2 0x79ba9f0a20 : 6(49152 size) total buffers - 5(40960 size) used buffers - 1/7 (recycle/alloc) - 10/619 (fetch/transfer) ExoPlayerImplInternal: Playback error com.google.android.exoplayer2.ExoPlaybackException: Source error at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:684) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:660) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:219) at android.os.HandlerThread.run(HandlerThread.java:67) Caused by: java.io.EOFException at com.google.android.exoplayer2.source.SampleDataQueue.sampleData(SampleDataQueue.java:194) at com.google.android.exoplayer2.source.SampleQueue.sampleData(SampleQueue.java:598) at com.google.android.exoplayer2.extractor.TrackOutput.sampleData(TrackOutput.java:165) at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:684) at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:266) at com.google.android.exoplayer2.source.BundledExtractorsAdapter.read(BundledExtractorsAdapter.java:133) at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1047) at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:420) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:929)
but after the video is decrypted and output as an mp4 file, it is normal to play it again, so my encrypted video file seems to be fine? after several days of trying, I have not found a solution yet. please help me!
Hi, I have an encrypted video stored on the server which I want to play in Exoplayer. I am using this repo custom datasource for playing encrypted video offline. For online playback, I added some code from Exoplayer
DefaultHttpDataSource
to implement thesetupInputStream
function from the server instead of the local file. The video plays but when I change the seekbar position after a few moments, I get an Invalid Nal Length Error and OnPlayerError is called. My Encryption Alghoritm isAES/CTR/NOPadding