【问题标题】:av_interleaved_write_frame() unknown error when streaming WebM流式传输 WebM 时出现 av_interleaved_write_frame() 未知错误
【发布时间】:2013-08-18 22:35:42
【问题描述】:

我正在关注a guide to live WebM streaming through FFMpeg / FFServer 并遇到了一个有趣的错误。我尝试使用 DirectShow 网络摄像头源,以及使用 -vcodec 副本的现有 WebM(有限长度)视频。最初,两者都将设法连接到 FFServer(我可以看到 /feed1.ffm 的 POST 200 OK),甚至可能发送一两个帧,但随后 FFMpeg 因av_interleaved_write_frame(): Unknown error 而崩溃。 (同时,FFServer 似乎还不错。)

这似乎是错误的一个不寻常的变体——通常更常见的是得到av_interleaved_write_frame(): I/O error(表示文件损坏)。有没有人看到这个错误,更好的是,谁能告诉我如何解决它?


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>

FFserver 日志

avserver version 0.8.6-6:0.8.6-1ubuntu2, Copyright (c) 2000-2013 the Libav developers

built on Mar 30 2013 with gcc 4.7.2

AVserver started

[current time] - [GET] "/feed1.ffm HTTP/1.1" 200 4149

[current time] - [POST] "/feed1.ffm HTTP/1.1" 200 4096

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

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

    【讨论】:

    • 最后我用一种不基于 FFMPEG 的完全不同的方法解决了我的具体问题,但我相信问题确实源于使用不同版本的 ffmpeg 和 ffserver。
    • 您能详细说明一下吗?我遇到了同样的问题,两个版本完全相同。
    【解决方案2】:

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

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

    检查使用的端口命令:

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

    我在文件夹中使用了自定义 ffmpeg。使用 'ffmpeg' 的命令使用了错误的 ffmpeg。然后我把它改成'./ffmpeg'。

    【讨论】:

    • 监听同一端口的进程是否允许 OP 描述的连接然后崩溃?当您观察到这种行为时,您收到了什么样的错误消息?详细说明您的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多