将ffmpeg与Flash Media Server和HDS一起使用

时间:2012-04-14 03:16:53

标签: flash ffmpeg streaming aac libx264

我想使用ffmpeg编码并将实时流发布到Flash Media Server。为了支持iOS设备,我还需要实现HTTP Live Streaming。视频需要采用H.264格式,音频应为AAC。我没有太多使用ffmpeg的经验,而且我很难让它工作。这是我尝试过的命令(以及一些变化):

ffmpeg.exe -threads 15 -f dshow -i video="USB2.0 UVC WebCam":audio="Microphone (Realtek High Defini" \
      -map_channel 0.1.1 -r 24 -acodec libvo_aacenc -ar 22050 -ab 128k -vcodec libx264 \
      -s vga -vb 100k -f flv "rtmp://<public-dns>/livepkgr/livestream1?adbe-live-event=liveevent" \
      -r 24 -acodec libvo_aacenc -ar 22050 -ab 128k -vcodec libx264 -s qvga -vb 200k \
      -f flv "rtmp://<public-dns>/livepkgr/livestream2?adbe-live-event=liveevent" \
      -r 24 -acodec libvo_aacenc -ar 22050 -ab 128k -vcodec libx264 -s vga -vb 350k 
      -f flv "rtmp://<public-dns>/livepkgr/livestream3?adbe-live-event=liveevent"

当我运行它时,它似乎连接到FMS,但后来我收到很多关于丢帧的错误消息 - 我不确定是否有任何帧被成功编码。我的CPU使用率也非常高。当我为其中一个流输入* .m3u8文件的URL时,我从FMS收到404错误(虽然可以访问主livestream.m3u8文件)。我也尝试输出到文件而不是FMS,但没有成功。我得到的只是一些非常乱码的声音,没有视频。

我应该使用什么选项/命令来使这个工作的任何建议?是否有人使用ffmpeg与FMS一起使用MP4视频进行HTTP动态流/ HLS?我一直在努力让HDS / HLS工作一段时间,任何帮助都会非常感激!它不应该有所作为,但我在Amazon EC2上使用FMS和他们的AMI图像。

谢谢!

1 个答案:

答案 0 :(得分:2)

-threads 15

我对这个价值深感怀疑。我自己对threads开关的研究和实验表明,任何高于4的值都是错误的。尝试删除它,使用较低的值和/或可被2整除的值。

-f flv

我也对这个价值深感怀疑。 FLV和h.264不能很好地融合在一起。请改用MP4。

您提到CPU “high”,但您没有提到百分比。另请注意,您正在编码三种不同的比特率 - 实际上是三个同时编码作业。而且你没有提到你正在运行的CPU。奔腾4或酷睿2?我不会感到惊讶。现代Core i7,还可以。

你为什么使用FFmpeg?使用Adobe Flash Media Live Encoder可能更容易。