Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]Android手机,播放m3u8 文件 没有声音 #34

Closed
cctanfujun opened this issue Apr 20, 2019 · 11 comments · Fixed by #79
Closed

[Bug]Android手机,播放m3u8 文件 没有声音 #34

cctanfujun opened this issue Apr 20, 2019 · 11 comments · Fixed by #79
Labels
android bug Something isn't working question Further information is requested

Comments

@cctanfujun
Copy link

如题 手机型号 meizu 15 plus,打包时候 libs 中只保留了armeabi-v7a 的文件 其他的都删了。

@cctanfujun cctanfujun added the wait confirm Waiting for developer confirmation label Apr 20, 2019
@cctanfujun
Copy link
Author

iOS 经测试 播放正常

@CaiJingLong
Copy link
Owner

提供一个公网可用的流地址

@CaiJingLong CaiJingLong added android question Further information is requested labels Apr 21, 2019
@cctanfujun
Copy link
Author

@CaiJingLong CaiJingLong added bug Something isn't working and removed wait confirm Waiting for developer confirmation labels Apr 21, 2019
@CaiJingLong
Copy link
Owner

看起来和m3u8无关 因为我使用另外的m3u8源是可用的
http://222.207.48.30/hls/startv.m3u8

另外,做下记录,在日志中有这么几句日志

Could not find codec parameters for stream 1 (Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp): unspecified sample rate
.....
I/IJKMEDIA(11627):     Stream #0:1
I/IJKMEDIA(11627): : Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp

似乎是无法找到audio的采样信息, 但是我使用mac上的ffprobe是可以获取的
后面我定位下原因,争取解决下

播放后的日志如下: 作为后续除错定位使用

D/IJKMEDIA(11627): IjkMediaPlayer_native_setup
I/IJKMEDIA(11627): av_version_info: ff3.4--ijk0.8.7--20180103--001
I/IJKMEDIA(11627): ijk_version_info: k0.8.8-15-ge7fde118
D/IJKMEDIA(11627): ffpipeline_create_from_android()
D/IJKMEDIA(11627): ijkmp_set_inject_opaque(0x26e6)
D/IJKMEDIA(11627): ijkmp_set_inject_opaque()=void
D/IJKMEDIA(11627): ijkmp_set_ijkio_inject_opaque(0x26e6)
D/IJKMEDIA(11627): ijkmp_set_ijkio_inject_opaque()=void
D/IJKMEDIA(11627): ijkmp_android_set_mediacodec_select_callback()
D/IJKMEDIA(11627): ffpipeline_set_mediacodec_select_callback
D/IJKMEDIA(11627): ijkmp_android_set_mediacodec_select_callback()=void
D/IJKMEDIA(11627): IjkMediaPlayer_setOption
D/IJKMEDIA(11627): IjkMediaPlayer_setOptionLong
I/chatty  (11627): uid=10085(com.example.ijkplayer_example) identical 6 lines
D/IJKMEDIA(11627): IjkMediaPlayer_setOptionLong
D/IJKMEDIA(11627): IjkMediaPlayer_setVideoSurface
D/IJKMEDIA(11627): ijkmp_set_android_surface(surface=0xfff10860)
D/IJKMEDIA(11627): ffpipeline_set_surface()
D/IJKMEDIA(11627): ijkmp_set_android_surface(surface=0xfff10860)=void
I/flutter (11627): (d)Ijk:onTextureChange 3
I/flutter (11627): (d)Ijk:id = 3 net uri = https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8 ,headers = {}
D/IJKMEDIA(11627): IjkMediaPlayer_setVolume
D/IJKMEDIA(11627): ijkmp_android_set_volume(1.000000, 1.000000)
D/IJKMEDIA(11627): ffpipeline_set_volume
D/IJKMEDIA(11627): ijkmp_android_set_volume(1.000000, 1.000000)=void
D/IJKMEDIA(11627): IjkMediaPlayer_setDataSourceAndHeaders
V/IJKMEDIA(11627): setDataSource: path https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8
D/IJKMEDIA(11627): ijkmp_set_data_source(url="https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8")
D/IJKMEDIA(11627): ijkmp_set_data_source(url="https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8")=0
D/IJKMEDIA(11627): IjkMediaPlayer_prepareAsync
D/IJKMEDIA(11627): ijkmp_prepare_async()
I/IJKMEDIA(11627): ===== versions =====
I/IJKMEDIA(11627): ijkplayer    : k0.8.8-15-ge7fde118
I/IJKMEDIA(11627): FFmpeg       : ff3.4--ijk0.8.7--20180103--001
I/IJKMEDIA(11627): libavutil    : 55.78.100
I/IJKMEDIA(11627): libavcodec   : 57.107.100
I/IJKMEDIA(11627): libavformat  : 57.83.100
I/IJKMEDIA(11627): libswscale   : 4.8.100
I/IJKMEDIA(11627): libswresample: 2.9.100
I/IJKMEDIA(11627): ===== options =====
I/IJKMEDIA(11627): player-opts : reconnect                    = 5
I/IJKMEDIA(11627): player-opts : framedrop                    = 5
I/IJKMEDIA(11627): SDL_RunThread: [11861] ff_msg_loop
I/IJKMEDIA(11627): player-opts : enable-accurate-seek         = 1
D/IJKMEDIA(11627): message_loop
I/IJKMEDIA(11627): player-opts : mediacodec                   = 1
I/IJKMEDIA(11627): format-opts : ijkapplication               = -227734912
I/IJKMEDIA(11627): format-opts : ijkiomanager                 = -669541888
I/IJKMEDIA(11627): format-opts : fflags                       = fastseek
I/IJKMEDIA(11627): format-opts : analyzemaxduration           = 100
I/IJKMEDIA(11627): format-opts : analyzeduration              = 1
I/IJKMEDIA(11627): format-opts : probesize                    = 10240
I/IJKMEDIA(11627): format-opts : flush_packets                = 1
I/IJKMEDIA(11627): ===================
D/IJKMEDIA(11627): FFP_MSG_FLUSH:
I/IJKMEDIA(11627): SDL_RunThread: [11862] ff_vout
D/IJKMEDIA(11627): ijkmp_prepare_async()=0
I/IJKMEDIA(11627): SDL_RunThread: [11863] ff_read
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 1
I/NotifyChannel(11627): onNativeInvoke 1
I/IJKMEDIA(11627): Hit DNS cache hostname = media001.geekbang.org
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 131073
I/NotifyChannel(11627): onNativeInvoke 131073
I/flutter (11627): IjkMediaControllerMixin attach [GlobalKey#8a1fa]
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 131074
I/NotifyChannel(11627): onNativeInvoke 131074
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 2
I/NotifyChannel(11627): onNativeInvoke 2
I/IJKMEDIA(11627): Opening 'https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-b64cf280cabc4d9c202a62095ae10e95-sd-00001.ts' for reading
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 1
I/NotifyChannel(11627): onNativeInvoke 1
I/IJKMEDIA(11627): Hit DNS cache hostname = media001.geekbang.org
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 131073
I/NotifyChannel(11627): onNativeInvoke 131073
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 131074
I/NotifyChannel(11627): onNativeInvoke 131074
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onNativeInvoke 2
I/NotifyChannel(11627): onNativeInvoke 2
E/IJKMEDIA(11627): Option analyzemaxduration not found.
D/IJKMEDIA(11627): FFP_MSG_OPEN_INPUT:
I/NotifyChannel(11627): onInfoListener 10005, extra = 0, isPlaying = false
E/IJKMEDIA(11627): Invalid NAL unit 0, skipping.
W/IJKMEDIA(11627): Stream #0: not enough frames to estimate rate; consider increasing probesize
W/IJKMEDIA(11627): Could not find codec parameters for stream 1 (Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp): unspecified sample rate
W/IJKMEDIA(11627): Consider increasing the value for the 'analyzeduration' and 'probesize' options
I/IJKMEDIA(11627): max_frame_duration: 10.000
I/IJKMEDIA(11627): Input #0, hls,applehttp, from 'https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8':
D/IJKMEDIA(11627): FFP_MSG_FIND_STREAM_INFO:
I/IJKMEDIA(11627):   Duration:
I/IJKMEDIA(11627): 00:04:45.96
I/IJKMEDIA(11627): , start:
I/IJKMEDIA(11627): 1.480000
I/IJKMEDIA(11627): , bitrate:
I/IJKMEDIA(11627): 0 kb/s
I/IJKMEDIA(11627):
I/IJKMEDIA(11627):   Program 0
I/IJKMEDIA(11627):     Metadata:
I/IJKMEDIA(11627):       variant_bitrate :
I/NotifyChannel(11627): onInfoListener 10006, extra = 0, isPlaying = false
I/IJKMEDIA(11627): 0
I/IJKMEDIA(11627):
I/IJKMEDIA(11627):     Stream #0:0
I/IJKMEDIA(11627): : Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9]
I/IJKMEDIA(11627): ,
I/IJKMEDIA(11627): 25 tbr,
I/IJKMEDIA(11627): 90k tbn,
I/IJKMEDIA(11627): 50 tbc
I/IJKMEDIA(11627):
I/IJKMEDIA(11627):     Metadata:
I/IJKMEDIA(11627):       variant_bitrate :
I/IJKMEDIA(11627): 0
I/IJKMEDIA(11627):
I/IJKMEDIA(11627):     Stream #0:1
I/IJKMEDIA(11627): : Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp
I/IJKMEDIA(11627):
I/IJKMEDIA(11627):     Metadata:
I/IJKMEDIA(11627):       variant_bitrate :
I/IJKMEDIA(11627): 0
I/IJKMEDIA(11627):
D/IJKMEDIA(11627): ffpipenode_create_video_decoder_from_android_mediacodec()
I/IJKMEDIA(11627): ffpipenode_create_video_decoder_from_android_mediacodec: MediaCodec: H264_HIGH: enabled
I/IJKMEDIA(11627): AMediaFormat: video/avc, 1280x720
D/IJKMEDIA(11627): SDL_AMediaFormatJava_createVideoFormat
E/IJKMEDIA(11627): csd-0: naked
I/IJKMEDIA(11627): amc: rotate notify: 0
D/IJKMEDIA(11627): ffpipeline_select_mediacodec_l
D/IJKMEDIA(11627): FFP_MSG_VIDEO_ROTATION_CHANGED: 0
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): onSelectCodec: mime=video/avc, profile=100, level=31
I/NotifyChannel(11627): onInfoListener 10001, extra = 0, isPlaying = false
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.aac.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/mp4a-latm
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.amrnb.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/3gpp
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.amrwb.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/amr-wb
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.flac.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/flac
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.g711.alaw.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/g711-alaw
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.g711.mlaw.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/g711-mlaw
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.gsm.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/gsm
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.mp3.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/mpeg
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.opus.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/opus
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.raw.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/raw
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.vorbis.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: audio/vorbis
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.aac.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.amrnb.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.amrwb.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.flac.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.h264.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: video/avc
I/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): candidate codec: OMX.google.h264.decoder rank=200
I/IjkMediaCodecInfo(11627):  Unknown Profile Level 52 (524288,65536)
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.h263.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: video/3gpp
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.hevc.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: video/hevc
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.mpeg4.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: video/mp4v-es
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.vp8.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: video/x-vnd.on2.vp8
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.vp9.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):     mime: video/x-vnd.on2.vp9
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.h264.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.h263.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.mpeg4.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627):   found codec: OMX.google.vp8.encoder
W/tv.danmaku.ijk.media.player.IjkMediaPlayer(11627): unaccetable codec: OMX.google.h264.decoder
E/IJKMEDIA(11627): mediacodec_select_callback: onSelectCodec failed
E/IJKMEDIA(11627): amc: no suitable codec
I/IJKMEDIA(11627): VideoCodec: avcodec, h264
W/IJKMEDIA(11627): fps: 25.000000 (normal)
D/IJKMEDIA(11627): FFP_MSG_COMPONENT_OPEN:
D/IJKMEDIA(11627): FFP_MSG_VIDEO_SIZE_CHANGED: 1280, 720
D/IJKMEDIA(11627): FFP_MSG_SAR_CHANGED: 1, 1
I/IJKMEDIA(11627): SDL_RunThread: [11872] ff_video_dec
D/IJKMEDIA(11627): ijkmp_get_msg: FFP_MSG_PREPARED
D/IJKMEDIA(11627): FFP_MSG_PREPARED:
D/IJKMEDIA(11627): FFP_MSG_VIDEO_ROTATION_CHANGED: 0
I/NotifyChannel(11627): onInfoListener 10007, extra = 0, isPlaying = true
I/NotifyChannel(11627): prepare {duration=285.96, tcpSpeed=225844, isPlaying=true, outputFps=0.0, currentPosition=0.0, width=1280, degree=0, height=720}
I/NotifyChannel(11627): completion buffer update {duration=285.96, tcpSpeed=274102, isPlaying=true, outputFps=0.0, currentPosition=0.0, width=1280, degree=0, height=720} 0
I/NotifyChannel(11627): onInfoListener 10001, extra = 0, isPlaying = true

@0-php
Copy link

0-php commented Apr 21, 2019

@CaiJingLong 其实我在之前的使用过程中也遇到了这个问题我用ffmpeg 转出来的m3u8确实没声音 用其他网盘的m3u8却正常 http://www.0-php.com/11/playlist.m3u8

@yhsj0919
Copy link

yhsj0919 commented May 5, 2019

https://156zy.suboyouku.com/2019/05/04/65Y0YxOc4ShcFAPa/playlist.m3u8 我现在也遇到了这个问题(提供一个资源站的视频链接),但是其他视频的链接大部分都是正常的

@jendy2012
Copy link

@CaiJingLong 几乎所有的m3u8都没有声音。

@ixdog
Copy link

ixdog commented May 29, 2019

同样.我也是没声音 但是例子里面的mp4正常。

@CaiJingLong
Copy link
Owner

@cctanfujun @0-php @yhsj0919 @jendy2012
各位可以尝试一下新的0.2.7版本

提供一个公网可用的流地址

https://media001.geekbang.org/f433fd1ce5e84d27b1101f0dad72a126/de563bb4aba94b5f95f448b33be4dd9f-9aede6861be944d696fe365f3a33b7b4-sd.m3u8

我使用这个连接中的m3u8测试有声音了

@CaiJingLong
Copy link
Owner

这个bug是由于我搜索到一些优化选项会影响m3u8的声音, 播放器内部的原因不明
https://www.jianshu.com/p/843c86a9e9ad

我在#79中把一些选项关闭了, 可能后续的一些播放表现会和从前不太一样, 主要应该体现在网络资源的播放上.

如果对于选项有需要,请参考readme中的自定option章节的说明.

@ruysay
Copy link

ruysay commented Sep 13, 2019

感謝兄弟分享經驗。
我這裡也遇到類似的狀況。
在我的程式裡用同樣的Option設置,播放RTSP stream效果很好,但是播放檔案的時候,則會出現有影像但沒有聲音的狀況。
修正方案是把針對RTSP stream播放的優化選項關閉,聲音就完全正常了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
android bug Something isn't working question Further information is requested
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants