使用rtmpdump的flv视频在流媒体播放器上没有持续时间

时间:2014-03-21 14:50:57

标签: flv rtmp flowplayer duration

我的问题:

我使用rtmpdump捕获了一些flv视频,示例命令是:

rtmpdump -v -r rtmp://aljazeeraflashlivefs.fplive.net/aljazeeraflashlive-live/aljazeera_ara_high -p http://www.elahmad.com/tv/Webtv/Arabian.htm -B 15 -o foo.flv

我意识到这不仅是这个命令的捕获,而且所有使用rtmpdump的捕获都无法显示我在使用流动播放器的网站上播放视频时的持续时间。这最终会导致流媒体失败,我无法改变播放时间。

我做了: 我尝试用Linux中的Movie Player打开它,持续时间在那里。

我也用flvtool2放了视频,但是失败了: flvtool2 -U foo.flv

错误:未定义的局部变量或方法'级别'为# 错误:/usr/lib/ruby/1.8/flv/amf_string_buffer.rb:102:in read__AMF_object' ERROR: /usr/lib/ruby/1.8/flv/amf_string_buffer.rb:132:in eval' 错误:/usr/lib/ruby/1.8/flv/amf_string_buffer.rb:102:in read__AMF_object' ERROR: /usr/lib/ruby/1.8/flv/amf_string_buffer.rb:132:in read__AMF_data' 错误:/usr/lib/ruby/1.8/flv/amf_string_buffer.rb:112:in read__AMF_array' ERROR: /usr/lib/ruby/1.8/flv/amf_string_buffer.rb:110:in步骤' 错误:/usr/lib/ruby/1.8/flv/amf_string_buffer.rb:110:in read__AMF_array' ERROR: /usr/lib/ruby/1.8/flv/amf_string_buffer.rb:136:in read__AMF_data' 错误:/usr/lib/ruby/1.8/flv/amf_string_buffer.rb:102:in read__AMF_object' ERROR: /usr/lib/ruby/1.8/flv/amf_string_buffer.rb:132:in read__AMF_data' 错误:/usr/lib/ruby/1.8/flv/meta_tag.rb:40:in after_initialize' ERROR: /usr/lib/ruby/1.8/flv/tag.rb:56:in初始化' 错误:/usr/lib/ruby/1.8/flv/stream.rb:451:in new' ERROR: /usr/lib/ruby/1.8/flv/stream.rb:451:in read_tags' 错误:/usr/lib/ruby/1.8/flv/stream.rb:58:in initialize' ERROR: /usr/lib/ruby/1.8/flvtool2/base.rb:272:in新' 错误:/usr/lib/ruby/1.8/flvtool2/base.rb:272:in open_stream' ERROR: /usr/lib/ruby/1.8/flvtool2/base.rb:238:in process_files' 错误:/usr/lib/ruby/1.8/flvtool2/base.rb:225:in each' ERROR: /usr/lib/ruby/1.8/flvtool2/base.rb:225:in process_files' 错误:/usr/lib/ruby/1.8/flvtool2/base.rb:44:in execute!' ERROR: /usr/lib/ruby/1.8/flvtool2.rb:168:in执行!' 错误:/usr/lib/ruby/1.8/flvtool2.rb:228 错误:/ usr / bin / flvtool2:2:在`require' 错误:/ usr / bin / flvtool2:2

即使元数据似乎也是腐败的。 我该怎么做才能解决这个问题呢?

感谢。

修改

我把视频发给ffmpeg然后恢复了:

ffmpeg -i foo.flv bar.flv

然而,这只是一种解决方法,我没有得到我的真实答案。

1 个答案:

答案 0 :(得分:0)

将librtmpdump包含在FFMPEG中,可以直接在ffmpeg中完成此功能。对于您上面列出的特定文件。您只需调用URL并将流传递给文件而无需重新编码。一个例子是:

ffmpeg -i rtmp://aljazeeraflashlivefs.fplive.net/aljazeeraflashlive-live/aljazeera_ara_high -vcodec copy -acodec copy ./foo.flv

这是将它复制到.flv容器中。如果您运行ffmpeg -i rtmp://aljazeeraflashlivefs.fplive.net/aljazeeraflashlive-live/aljazeera_ara_high,您将看到该视频具有以下内容:

流#0:0:视频:h264(主要),yuv420p(电视),640x360 [SAR 1:1 DAR 16:9],819 kb / s,25 fps,25 tbr,1k tbn,50 tbc < / p>

流#0:1:音频:aac,48000 Hz,立体声,fltp,65 kb / s

因此该文件是h264 / AAC流。

这应该提供具有适当时间戳的兼容流。