【问题标题】:RED5 1.0.2 recorded FLV convert to Mobile/HTML5 format with FFMPEG av out of syncRED5 1.0.2 录制的 FLV 转换为 Mobile/HTML5 格式,FFMPEG av 不同步
【发布时间】:2013-09-03 06:31:23
【问题描述】:

我在 Red5 v1.0.2 中录制的视频有问题(我之前的 v1 有问题,它没有录制任何视频,但 1.0.2 可以)。当我录制 flv 时,我想将其 转换 为一些 mp4。但是我的设置有问题,因为每次质量/音频同步都会出现问题。您能帮我如何使用 ffmpeg 进行转换(将来在服务器上自动处理)。

第二个问题是,在 flash 客户端中 buffer length 总是 0,但在 v0.8 中它已被填充,最后我等待直到空,在这里我不知道我应该等多久。我创建了这个 url http://code.google.com/p/red5/issues/detail?id=312,他们说要等到我得到 UnPublish.Success,但我在 ns.close()

之后才得到那个事件

我的 Flash 客户端记录设置为 (FP10):

视频:

  • 分辨率 = 640x360
  • fps = 30
  • 关键帧间隔 = 15
  • 视频质量 = 90
  • 带宽 = 0

音频:

  • 麦克风编解码器 = SPEEX
  • 编码质量 = 9
  • 静音级别 = 0

  • bufferTime = 15

VLC 中录制的视频参数(从捷克语翻译成英语):

视频

  • 编解码器:Flash 视频 (FLV1)
  • 分辨率:640x360
  • 格式:平面 4:2:0 YUV

音频

  • 编解码器:Speex 音频 (spx)
  • 频率:16000Hz
  • 每个样本位:16
  • 数据流:16 kb/s

有关视频的 FFMEPG 信息:

 Metadata:
   server          : Red5 Server 1.0.2 Rev: 4616
   creationdate    : Mon Sep 02 23:17:08 CEST 2013
   canSeekToEnd    : true
 Duration: 00:00:33.24, start: 0.000000, bitrate: 645 kb/s
   Stream #0:0: Video: flv1, yuv420p, 640x360, 625 kb/s, 1k tbr, 1k tbn, 1k tbc

   Stream #0:1: Audio: speex, 16000 Hz, mono, s16, 16 kb/s

bsplayer 显示 25fps - 但我录制了 30fps,我不太了解。

我对 ffmpeg 的尝试(我是 ffmpeg 新手)。

首先我录制了 33 秒长的视频

当我使用命令:ffmpeg -i test.flv -ar 44100 -ab 160k -ac 1 output.mp3 转换音频时,音频只有 30 秒

我试过这个命令,但没有一个好的解决方案

ffmpeg -i test.flv -vcodec mpeg4 -acodec libvo_aacenc output.mp4

ffmpeg -i test.flv -acodec libvo_aacenc -aq 200 outputsss.mp4

ffmpeg -i test.flv -c:v libvpx -c:a libvorbis output.webm // here is sound synced good - but sound have repeating silence lags (every 1-2s)

真的很感谢你的帮助,我很多天都在与转换作斗争:(

【问题讨论】:

  • 你用 Xuggler 试过了吗?在 Xuggler 中,IMediaReader 和 IMediaWriter 将帮助您将 flv 转换为 mp4

标签: ffmpeg sync mp4 flv red5


【解决方案1】:

我们也遇到了这些音频延迟问题(我们仍处于 0.8,因为 1.0 损坏了录制的 FLV 文件 - 将使用 1.0.3 重试)。

我们的解决方案是使用命令行“MediaInfo”工具来提取音频延迟。 MediaInfo 可以返回 XML 输出(请务必检查版本字符串,因为此输出往往会随版本而变化),我们解析了类似 /Mediainfo/File/track[@type="Audio"] 的内容,正确的条目命名为(在我们的例子中)Video_Delay_String3

然后将其输入到带有-itsoffset -00:00:00.XX 的ffmpeg 转码命令中。

【讨论】:

  • 感谢您的回复。到我创立的时候,它可能是通过玩来创造的。因为缓冲区小。在您录制视频和音频数据包时,它们会以随机顺序存储在缓冲区中。所以在播放大缓冲区大小时需要设置(最好设置为与视频长度相同的长度)。我离开了 RED5,现在我正在使用 nginx,它工作得很好,但仍然必须使用这个缓冲区修复。
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 2020-09-02
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
相关资源
最近更新 更多