使用FFMPEG播放我的网络摄像头';YouTube上的视频

使用FFMPEG播放我的网络摄像头';YouTube上的视频,youtube,ffmpeg,webcam,rtmp,youtube-livestreaming-api,Youtube,Ffmpeg,Webcam,Rtmp,Youtube Livestreaming Api,我一直在尝试使用ffmpeg将我的网络摄像头的视频流到YouTube,到目前为止,我所能做的只是YouTube发出的“确认”,上面用绿色表示“开始”。然而,它很快就会变成灰色,而实际的流从离线开始就不会真正改变 我正在使用此命令尝试对其进行流式处理: ffmpeg-rtbufsize 1500M-r 25-f dshow-s 1280x720-i video=“USB2.0高清UVC网络摄像头”-vcodec h264-b:a 600k-acodec libfaac-ab 128k-f flv”

我一直在尝试使用ffmpeg将我的网络摄像头的视频流到YouTube,到目前为止,我所能做的只是YouTube发出的“确认”,上面用绿色表示“开始”。然而,它很快就会变成灰色,而实际的流从离线开始就不会真正改变

我正在使用此命令尝试对其进行流式处理:

ffmpeg-rtbufsize 1500M-r 25-f dshow-s 1280x720-i video=“USB2.0高清UVC网络摄像头”-vcodec h264-b:a 600k-acodec libfaac-ab 128k-f flv”rtmp://a.rtmp.youtube.com/live2/user.useruser.codecodecode“

我已经设法用ffmpeg将视频流到YouTube上,只是摄像头坏了。知道我做错了什么吗

这是我现在使用的命令
ffmpeg-r 18-f dshow-s 1280x720-i video=“USB2.0高清UVC网络摄像头”:audio=“麦克风(Realtek高清音频)”-vcodec h264-b:v 1800k-acodec aac-严格的实验性-f flv”rtmp://a.rtmp.youtube.com/live2/useruser.useruser.codecodecodecode“

我现在使用
-acodec aac
而不是libfaac或libfdk_aac,因为我遇到了“未知编码器”错误

不过,它会流几秒钟,现在我发现以下错误:


你知道这些是什么意思,或者如何修复它们吗?

你的命令有一些问题:

  • 你没有音频流。使用
    dshow
    时,您还需要按照说明指定
    audio

    ffmpeg-f dshow-i video=“集成摄像头”:audio=“麦克风名称在此”

    如果您不打算捕获音频,请放置一个无声的音频曲目

  • -b:a
    与音频比特率
    -ab
    -相同。必须使用
    -b:v
    指定视频比特率<对于1280x720px@25fps
    H.264
    视频流而言,代码>600k太低

    YouTube:

    720p

    视频比特率范围:1500-4000 Kbps

    您应该至少放入
    1800k

  • 关于您正在使用的音频
    libfaac
    。为了在编码
    AAC
    时获得最佳效果,最好使用
    libfdk_AAC


使用FFmpeg将IP摄像机直播到Youtube对于Ubuntu用户(我所做的)

  • 在ubuntu 12.04或14.04上安装最新的ffmpeg

  • 在Ubuntu上编译FFmpeg

  • 打开Youtube。登录。点击我的频道>视频管理器>直播。注意“流名称/键”

  • 对于静态视频文件:

    ffmpeg -re -i "(input-file)"  -acodec libmp3lame  -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/(Stream name/key)"
    
  • 对于具有rtsp仅视频输出的IP摄像机的流式视频:

    ffmpeg -re -i input-file  -rtsp_transport tcp -i "rtsp://password@(streamaddress with local IP)"  -acodec libmp3lame  -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/(Stream name/key)"
    

  • 如果您有一个IP地址为全高清x264视频源且没有音频的网络摄像机,并且您希望将您的直接摄像头屏幕流式传输到YouTube,则不需要始终将视频转码/重新编码到较低的分辨率。YouTube可以接受一些摄像机的直接视频流。唯一的问题是你必须添加一个额外的空/无声音轨。如果你的人际网络中有足够的带宽,那么它应该可以正常工作

    我在带有Ubuntu 16.04的Pine64+上使用此CLI命令,它正在工作:

    ffmpeg -re -rtsp_transport tcp -i "rtsp://<user>:<pass>@<camera_ip>:<port>" /
           -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 /
           -c:a libmp3lame -ab 128k -ar 44100 /
           -c:v copy -threads 2 -bufsize 512k /
           -f flv "rtmp://a.rtmp.youtube.com/live2/<your-live-stream-key>"
    
    ffmpeg-re-rtsp_传输tcp-i“rtsp://:@:/
    -f lavfi-i anullsrc=频道布局=立体声:采样率=44100/
    -c:libmp3lame-ab 128k-ar 44100/
    -c:v复制-螺纹2-bufsize 512k/
    -f flv“rtmp://a.rtmp.youtube.com/live2/"
    
    (以下是有关Libavfilter输入虚拟设备的一些信息:)

    这样,您就可以将带有静音音频的直接摄像头屏幕转发到YouTube,而CPU使用率最低

    一些限制:

  • 当网络关闭时(例如,ISP刷新网络、更改公共IP或重新启动路由器),ffmpeg将丢失信号(网络摄像机和/或YouTube RTSP)
  • 正如我看到的,有时YouTube会停止接收流,并将最后的数据转换为视频文件(归档流视频),然后再为实时流创建新的标识符。这会影响ffmpeg(RTSP连接丢失)的操作,并影响插入YouTube实时流代码的网页。 (我发现YouTube只能一块处理最多12小时的视频)
  • 在这两种情况下,ffpmeg都无法检测到网络或流问题。所以,如果你想流一个无休止的流,很难正确地自动化

    • 不知何故,您需要检测网络错误
    • 不知何故,您需要检测YouTube何时停止在RTSP上侦听
    • 不知何故,您需要检测ffmpeg是否与摄像机失去通信
    • 最后,当所有服务都恢复工作时,您需要重新启动ffmpeg

    暂时我正在使用一个小的cron作业,每小时重新启动一次ffmpeg。

    谢谢,这帮了我很大的忙,但是在它开始流媒体之后,我马上收到了“RTMP send error 10053”错误。知道这是什么吗?(我用截图更新了我的帖子)我遇到了这个问题…这可能意味着流被延迟,直到被丢弃。我在你的屏幕快照中看到低fps。你的计算机能完成任务吗?如果你不想捕获音频,那么就放一个无声音轨-->你能解释一下原因吗?@Mulvya在我写这个答案时,YouTube Live Injection point预期会有音频流。第二,如果没有音频流,当使用HLS时,苹果设备上的播放可能会失败,因为他们希望视频和音频混合(在旧版本的协议中)。参见第5点,输出为视频+音频。如何从IP摄像头到youtube仅传输视频(无音频)?我尝试过使用
    ——一个
    选项,但youtube上没有显示视频,尽管ffmpeg仍在运行。