ffmpeg抓取音频流数据失败

问题描述:
ffmpeg通过命令行方法抓取海康摄像头rtsp的音频流数据有概率失败

使用场景:
cotex-A7 嵌入式平台
rtsp是音视频混流 h.264+ aac

    sprintf(cmd,"ffmpeg -rtsp_transport tcp -buffer_size 102400 -i rtsp://%s:%s@%s:554 -t 00:00:30 -acodec copy -vn %s",\
    user,pwd,addr,time,filename);
    printf("cmd %s\n",cmd);

问题现象
1、有概率出现录制1s左右后退出
2、有概率出现录制30s,结果只有20多秒的音频文件
3、 没有任何报错信息

尝试方法
增大buffer_size 无效果

1,-buffer_size 102400,你这设置的缓冲区才100K,对音视频数据来说,太小了。你看下海康摄像机视频参数码流,设置的是多少,如下图设置的是2M

img

2,将缓冲区设置成8M试试,即8x1024x1024 = 8,388,608

sprintf(cmd,"ffmpeg -rtsp_transport tcp -buffer_size 8388608 -i rtsp://%s:%s@%s:554 -t 00:00:30 -acodec copy -vn %s",\
    user,pwd,addr,time,filename);

3,也可以将视频一块录制下来,看看视频是否连续
4,确保cotex-A7 嵌入式平台与摄像机之间网络连接通畅,无丢包

如有帮助,请采纳一下;如有问题,再留言沟通。谢谢!

ffmpeg貌似可以调节频率,感觉像是频率有关系

好的,我周一尝试后回复,多谢了

我认为可以在分析SDP时 ,核实真正的流,才增加 nb_stream 。比如有codecID

音视频数据的传输大多都是用udp协议,用tcp传输效率不高,可以将tcp改为udp试试