0

我想使用 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,但没有成功。我得到的只是一些非常混乱的声音,没有视频。

关于我应该使用哪些选项/命令来使其正常工作的任何建议?是否有人使用带有 FMS 的 ffmpeg 来处理带有 MP4 视频的 HTTP 动态流/HLS?我一直在努力让 HDS/HLS 工作一段时间,任何帮助将不胜感激!应该没什么区别,但我在 Amazon EC2 上使用 FMS 和他们的 AMI 映像。

谢谢!

4

1 回答 1

2
-threads 15

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

-f flv

我也对这个价值深表怀疑。FLV 和 h.264 不能很好地配合使用。请改用 MP4。

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

你为什么使用FFmpeg?使用 Adob​​e 的Flash Media Live Encoder可能会更容易。

于 2012-04-20T10:32:40.833 回答