Ffmpeg av_交错_写入_帧()流式传输WebM时发生未知错误

Ffmpeg av_交错_写入_帧()流式传输WebM时发生未知错误,ffmpeg,Ffmpeg,我在跟踪并遇到了一个有趣的错误。我尝试过使用DirectShow网络摄像头源,也尝试过使用-vcodec拷贝的现有WebM(有限长度)视频。最初,两者都将设法连接到FFServer(我可以看到/feed1.ffm上的200个OK),甚至可能发送一两个帧,但随后FFMpeg会崩溃,出现av\u interleaved\u write\u frame():未知错误。(与此同时,FFServer似乎还不错。) 这似乎是该错误的一个不寻常的变体-通常更常见的情况是,例如,获取av_交错_write_fr

我在跟踪并遇到了一个有趣的错误。我尝试过使用DirectShow网络摄像头源,也尝试过使用-vcodec拷贝的现有WebM(有限长度)视频。最初,两者都将设法连接到FFServer(我可以看到/feed1.ffm上的200个OK),甚至可能发送一两个帧,但随后FFMpeg会崩溃,出现
av\u interleaved\u write\u frame():未知错误
。(与此同时,FFServer似乎还不错。)

这似乎是该错误的一个不寻常的变体-通常更常见的情况是,例如,获取av_交错_write_frame():I/O错误(表示文件损坏)。有人看到过这个错误吗?更好的是,有人能告诉我如何修复它吗


FFMpeg命令
  • ffmpeg-re-i univac.webm-vcodec copy-acodec copy-f webm http://[my server]/feed1.ffm
  • ffmpeg-f dshow-i video=“[my dshow source]”-f webm http://[my server]/feed1.ffm
FFserver命令
ffserver-f ffserver.conf

ffserver.conf 这只是上述指南中的一个微小变化

Port 8080  
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 5
# MaxBandwidth 10000 
CustomLog -
NoDaemon  

<Feed feed1.ffm>       
   File ./feed1.ffm   
   FileMaxSize 1G  
   ACL allow [IP of the machine with ffmpeg]  
</Feed>

<Stream test.webm> 
   Feed feed1.ffm    
   Format webm

   # Audio settings
   AudioCodec vorbis
   AudioBitRate 64   

   # Video settings
   VideoCodec libvpx
   VideoSize 640x480
   VideoFrameRate 30
   AVOptionVideo flags +global_header
   AVOptionVideo cpu-used 0
   AVOptionVideo qmin 10
   AVOptionVideo qmax 42
   AVOptionVideo quality good
   AVOptionAudio flags +global_header
   VideoBitRate 400

   # Streaming settings
   PreRoll 15
   StartSendOnKey
</Stream>
端口8080
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 5
#最大带宽10000
自定义日志-
诺达蒙
文件./feed1.ffm
FileMaxSize 1G
ACL允许[ffmpeg机器的IP]
饲料1.ffm
格式webm
#音频设置
音频编解码器
音频比特率64
#视频设置
视频编解码器libvpx
视频大小640x480
视频帧率30
AVOptionVideo标志+全局_标题
AVOptionVideo cpu使用了0
AVOptionVideo qmin 10
AVOptionVideo qmax 42
视频质量好
AVOptionAudio标志+全局_标题
视频比特率400
#流媒体设置
预卷15
斯塔森多基
FFserver日志
avserver版本0.8.6-6:0.8.6-1ubuntu2,版权所有(c)2000-2013 Libav开发者

于2013年3月30日建成,带有gcc 4.7.2

AVserver已启动

[当前时间]-[GET]“/feed1.ffm HTTP/1.1”200 4149


[当前时间]-[POST]“/feed1.ffm HTTP/1.1”200 4096

这可能是由于使用不同版本的ffmpeg和ffserver造成的。 尝试使用相同的版本。他们应该毫无问题地工作。
此外,仅使用libav或ffmpeg,因为它们可能彼此不太兼容。

连接是由tcp建立的,在我收到客户端“av_interleaved_write_frame():未知错误”上的错误后。我在服务器上看到“连接超时”

对我来说,我发现在配置为在客户端上使用ffmpeg的同一端口上监听了另一个进程

要检查已使用的端口命令,请执行以下操作:

(windows)netstat-a-b
(ubuntu)netstat-a-p


我在文件夹中使用了自定义ffmpeg。使用“ffmpeg”的命令使用了错误的ffmpeg。然后我将其改为“/ffmpeg”。

最后,我用一种不基于ffmpeg的完全不同的方法解决了我的具体问题,但我相信问题确实源于使用不同版本的ffmpeg和ffserver。你能详细说明一下吗?我遇到了同样的问题,而且两个版本完全相同。在同一端口上侦听的进程是否会允许OP描述的连接,然后崩溃?当您观察到这种行为时,您收到了什么样的错误消息?详细说明你的答案。