Skip to content

After pushing the audio and video data streams, when pushing pure video data to this channel, VLC player will have abnormal playback and the media information will display an additional audio codec information. #1630

@limjoe

Description

@limjoe

Description'

Please ensure that you maintain the markdown structure.

It seems that SRS caches the audio meta information of a specific channel. After pushing a data stream containing both audio and video to a channel, if a data stream containing only video is pushed later, VLC player will play the video abnormally without black screen, and VLC media information will display an additional audio codec information.'

Please ensure that you maintain the markdown structure.

  1. SRS version: 3.0.121
  2. The log of SRS is as follows:

Please ensure that you maintain the markdown structure.

[2020-03-06 16:33:40.357][Trace][23607][469] RTMP client ip=118.114.22.175, fd=10
[2020-03-06 16:33:40.548][Trace][23607][469] simple handshake success.
[2020-03-06 16:33:40.550][Trace][23607][469] connect app, tcUrl=rtmp://120.92.213.203:11935/live, pageUrl=, swfUrl=, schema=rtmp, vhost=120.92.213.203, port=11935, app=l
ive, args=null
[2020-03-06 16:33:40.550][Trace][23607][469] protocol in.buffer=0, in.ack=0, out.ack=0, in.chunk=128, out.chunk=128
[2020-03-06 16:33:40.653][Trace][23607][469] client identified, type=fmle-publish, vhost=120.92.213.203, app=live, stream=LIVEPL16DD80CE047_2, param=, duration=0ms
[2020-03-06 16:33:40.653][Trace][23607][469] connected stream, tcUrl=rtmp://120.92.213.203:11935/live, pageUrl=, swfUrl=, schema=rtmp, vhost=__defaultVhost__, port=11935
, app=live, stream=LIVEPL16DD80CE047_2, param=, args=null
[2020-03-06 16:33:40.653][Trace][23607][469] source url=/live/LIVEPL16DD80CE047_2, ip=118.114.22.175, cache=0, is_edge=0, source_id=-1[-1]
[2020-03-06 16:33:40.959][Trace][23607][469] ignore disabled exec for vhost=__defaultVhost__
[2020-03-06 16:33:40.959][Trace][23607][469] set fd=10 TCP_NODELAY 0=>1
[2020-03-06 16:33:40.959][Trace][23607][469] start publish mr=0/350, p1stpt=20000, pnt=5000, tcp_nodelay=1
[2020-03-06 16:33:41.011][Trace][23607][469] got metadata, width=1920, height=1080, vcodec=7
[2020-03-06 16:33:41.012][Trace][23607][469] 36B video sh,  codec(7, profile=Baseline, level=Other, 1920x1088, 0kbps, 0.0fps, 0.0s)

[2020-03-06 16:33:52.891][Trace][23607][470] RTMP client ip=118.114.22.175, fd=11
[2020-03-06 16:33:52.941][Trace][23607][470] complex handshake success
[2020-03-06 16:33:52.986][Trace][23607][470] connect app, tcUrl=rtmp://120.92.213.203:11935/live, pageUrl=, swfUrl=, schema=rtmp, vhost=120.92.213.203, port=11935, app=l
ive, args=null
[2020-03-06 16:33:52.986][Trace][23607][470] protocol in.buffer=0, in.ack=0, out.ack=0, in.chunk=128, out.chunk=128
[2020-03-06 16:33:53.258][Trace][23607][470] ignore AMF0/AMF3 command message.
[2020-03-06 16:33:53.668][Trace][23607][470] ignore AMF0/AMF3 command message.
[2020-03-06 16:33:53.668][Trace][23607][470] client identified, type=Play, vhost=120.92.213.203, app=live, stream=LIVEPL16DD80CE047_2, param=, duration=-1ms
[2020-03-06 16:33:53.668][Trace][23607][470] connected stream, tcUrl=rtmp://120.92.213.203:11935/live, pageUrl=, swfUrl=, schema=rtmp, vhost=__defaultVhost__, port=11935, app=live, stream=LIVEPL16DD80CE047_2, param=, args=null
[2020-03-06 16:33:53.668][Trace][23607][470] source url=/live/LIVEPL16DD80CE047_2, ip=118.114.22.175, cache=0, is_edge=0, source_id=469[469]
[2020-03-06 16:33:53.669][Trace][23607][470] set fd=11 TCP_NODELAY 0=>1
[2020-03-06 16:33:53.669][Trace][23607][470] dispatch cached gop success. count=0, duration=0
[2020-03-06 16:33:53.669][Trace][23607][470] create consumer, active=1, queue_size=0.00, jitter=10000000
[2020-03-06 16:33:53.669][Trace][23607][470] set fd=11, SO_SNDBUF=46080=>50000, buffer=100ms
[2020-03-06 16:33:53.669][Trace][23607][470] start play smi=0ms, mw_sleep=100, mw_enabled=1, realtime=1, tcp_nodelay=1

[2020-03-06 16:34:04.028][Trace][23607][470] -> PLA time=10000023, msgs=2, okbps=374,0,0, ikbps=2,0,0, mw=100
[2020-03-06 16:34:05.959][Trace][23607][469] <- CPB time=20000027, okbps=1,0,0, ikbps=409,0,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:34:13.699][Trace][23607][470] -> PLA time=20000086, msgs=2, okbps=399,0,0, ikbps=1,0,0, mw=100
[2020-03-06 16:34:15.959][Trace][23607][469] <- CPB time=30000114, okbps=0,1,0, ikbps=417,408,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:34:24.620][Trace][23607][470] -> PLA time=31000089, msgs=1, okbps=409,407,0, ikbps=0,0,0, mw=100
[2020-03-06 16:34:30.959][Trace][23607][469] <- CPB time=45000199, okbps=0,1,0, ikbps=421,408,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:34:34.885][Trace][23607][470] -> PLA time=41000178, msgs=2, okbps=416,407,0, ikbps=0,0,0, mw=100
[2020-03-06 16:34:44.951][Trace][23607][470] -> PLA time=51000357, msgs=2, okbps=420,407,0, ikbps=0,0,0, mw=100
[2020-03-06 16:34:45.959][Trace][23607][469] <- CPB time=60000378, okbps=0,0,0, ikbps=422,441,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:34:54.756][Trace][23607][470] -> PLA time=61000388, msgs=2, okbps=419,429,0, ikbps=0,0,0, mw=100
[2020-03-06 16:34:55.959][Trace][23607][469] <- CPB time=70000384, okbps=0,0,0, ikbps=424,441,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:35:04.846][Trace][23607][470] -> PLA time=71000574, msgs=2, okbps=425,429,0, ikbps=0,0,0, mw=100
[2020-03-06 16:35:05.959][Trace][23607][469] <- CPB time=80000559, okbps=0,0,0, ikbps=426,441,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:35:14.831][Trace][23607][470] -> PLA time=81000598, msgs=2, okbps=422,429,0, ikbps=0,0,0, mw=100
[2020-03-06 16:35:15.959][Trace][23607][469] <- CPB time=90000600, okbps=0,0,0, ikbps=426,426,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:35:24.765][Trace][23607][470] -> PLA time=91000729, msgs=2, okbps=422,429,0, ikbps=0,0,0, mw=100
[2020-03-06 16:35:25.959][Trace][23607][469] <- CPB time=100000706, okbps=0,0,0, ikbps=428,426,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:35:35.959][Trace][23607][469] <- CPB time=110000734, okbps=0,0,0, ikbps=427,426,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:35:38.592][Trace][23607][469] shrinking, size=0, removed=120, max=10000ms
[2020-03-06 16:35:45.959][Trace][23607][469] <- CPB time=120000762, okbps=0,0,0, ikbps=427,427,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:35:48.864][Trace][23607][469] shrinking, size=0, removed=121, max=10000ms
[2020-03-06 16:35:55.959][Trace][23607][469] <- CPB time=130000872, okbps=0,0,0, ikbps=428,427,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:35:58.597][Error][23607][470][4] serve error code=1011 : service cycle : rtmp: stream service : rtmp: send 2 messages : send messages : writev : writev timeout 30000 ms
thread [23607][470]: do_cycle() [src/app/srs_app_rtmp_conn.cpp:210][errno=4]
thread [23607][470]: service_cycle() [src/app/srs_app_rtmp_conn.cpp:400][errno=4]
thread [23607][470]: do_playing() [src/app/srs_app_rtmp_conn.cpp:786][errno=62]
thread [23607][470]: send_and_free_messages() [src/protocol/srs_rtmp_stack.cpp:834][errno=62]
thread [23607][470]: srs_write_large_iovs() [src/protocol/srs_protocol_utility.cpp:341][errno=62]
thread [23607][470]: writev() [src/service/srs_service_st.cpp:585][errno=62](Interrupted system call)
[2020-03-06 16:36:05.959][Trace][23607][469] <- CPB time=140000940, okbps=0,0,0, ikbps=428,427,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:36:15.959][Trace][23607][469] <- CPB time=150001137, okbps=0,0,0, ikbps=429,431,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:36:25.959][Trace][23607][469] <- CPB time=160001205, okbps=0,0,0, ikbps=428,431,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:36:35.959][Trace][23607][469] <- CPB time=170001261, okbps=0,0,0, ikbps=428,431,0, mr=0/350, p1stpt=20000, pnt=5000

[2020-03-06 16:36:45.959][Trace][23607][469] <- CPB time=180001383, okbps=0,0,0, ikbps=429,430,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:36:55.959][Trace][23607][469] <- CPB time=190001417, okbps=0,0,0, ikbps=428,430,0, mr=0/350, p1stpt=20000, pnt=5000
[2020-03-06 16:37:05.959][Trace][23607][469] <- CPB time=200001499, okbps=0,0,0, ikbps=430,430,0, mr=0/350, p1stpt=20000, pnt=5000
  1. The configuration of SRS is as follows:

Please ensure that you maintain the markdown structure.

listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
grace_start_wait    700;
grace_final_wait    800;

http_server {
    enabled         on;
    listen          18080;
    dir             ./objs/nginx/html;
}

stats {  
    network         0;   
    disk            vda vdb;
}

http_api {  
    enabled         on;   
    listen          1985;  
    crossdomain     on;
}

vhost __defaultVhost__ {
    min_latency     on;
    tcp_nodelay     on;

    publish {
        mr off;
    }

    play {
        gop_cache       off;
        queue_length    10;
        mw_latency      100;
    }    
}

Replay

Please ensure that you maintain the markdown structure.

How to replay bug?
The pure video data file used for replay can be found at: link (password: cnvp).
Please ensure that you maintain the markdown structure.

1. Pushing pure video stream data to channel A using ffmpeg, the rtmp playback is normal, and VLC's meta information also shows that only the video type stream is present.
Please ensure that you maintain the markdown structure.
2. ffmpeg -re -i 1583334009334.flv -vcodec copy -f flv -y rtmp://localhost:1935/live/LIVEPL16DD80CE047_2
1. Whether using ffmpeg or pushing data containing both audio and video to ChannelA, the rtmp playback is normal, and VLC's meta information will display two streams, one for audio and one for video.
Please ensure that you maintain the markdown structure.
2. ffmpeg -re -i 1583334009334.flv -vcodec copy -acodec copy -f flv -y rtmp://localhost:1935/live/LIVEPL16DD80CE047_2
1. Repeating the operation in step 1, pushing a stream of pure video data to Channel A results in abnormal rtmp playback (VLC cannot play, it remains black after a long buffering time). In VLC's meta information, besides displaying the video's meta information, an additional audio stream meta information will also be displayed.
2. Using ffmpeg to push the stream of pure video to a new channel B, rtmp playback is normal again.
3. Suspected that VLC or ffprobe may cache meta information, but even after closing and reopening VLC, the issue remains as described above.
4. Only after restarting the SRS service, the additional display of audio meta information will no longer occur.

Please ensure that you maintain the markdown structure.

Expected behavior

Expected behavior:

When pushing pure video data after previously pushing data containing audio and video, VLC and other web clients should be able to support playback without returning additional audio meta information.

TRANS_BY_GPT3

Metadata

Metadata

Assignees

Labels

BugIt might be a bug.TransByAITranslated by AI/GPT.Won't fixWe won't fix it.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions