【问题标题】:avconv simultaneously stream from usb webcam and save video onto diskavconv 同时从 USB 网络摄像头流式传输并将视频保存到磁盘
【发布时间】:2017-11-27 12:15:01
【问题描述】:

我需要同时流式传输/广播(通过 rtmp)并从我的 USB 网络摄像头保存视频(带音频)。网络摄像头是罗技 c920,具有硬件 h.264 编码器。

我不想重新编码媒体,所以我使用-c:v copy 选项。

整个脚本如下所示:

#! /bin/bash

SOURCEV="/dev/video0"
SOURCEA="hw:1"

FILE_TO_SAVE="Archive/file_to_save.mp4"
YOUTUBE_URL="rtmp://x.rtmp.youtube.com/live2"
KEY="my-secret-key"        

avconv -f alsa -ac 2 -r 44100 -i $SOURCEA \
-s 1920x1080 -r 24 -c:v h264 -i "$SOURCEV" \
-ar "44100" -r:v 24 -c:a aac -c:v copy -s 1920x1080 -f mp4 "$FILE_TO_SAVE" \
-g $FPS*4 -ar "44100" -b:a "128k" -ac 2 -r 24 -c:a aac -c:v copy -s 1920x1080 -f flv "$YOUTUBE_URL/$KEY"

这种方法“有效” - 这意味着它可以流式传输内容并将其保存到磁盘,但这种方法的问题是文件视频依赖于流。例如,如果 Internet 连接太慢,则保存的文件的 FPS 会很低。如果 Internet 连接中断,则视频文件的“录制”将停止。

谁能帮我让这两个流独立?

所有事情都发生在 raspberrypi 3 上,因此计算能力非常有限。

【问题讨论】:

    标签: output libav simultaneous avconv


    【解决方案1】:

    尝试在本地安装 nginx + nginx-rtmp 并流式传输。在服务器选项中启用保存到本地文件。并启动其他脚本以重新流式传输到 youtube。

    【讨论】:

    • 谢谢,它似乎工作得相当稳定,但 youtube 现在警告我我的关键帧间隔是 10 秒。有什么办法可以缩短吗?我读过这个话题:link 但是我的 h264_i_frame_period 控件不见了。棘手的问题是我可以使用 guvcview 设置 iframe 间隔,但此设置似乎仅适用于当前的 guvcview 实例,
    • 这是编码器特定的设置,nginx不转码视频。
    • 我知道这不是 nginx 控制的。只是不想问/打开另一个问题。也许有人知道如何将编码器关键帧间隔设置为 100 帧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2013-05-14
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多