gpt4 book ai didi

python - 有没有办法使用 ffmpeg 将 RTSP 音频流仅流式传输到标准输出

转载 作者:行者123 更新时间:2023-12-04 22:57:04 25 4
gpt4 key购买 nike

我有一个通过 rtsp 流式传输视频/音频的网络摄像头。我希望制作一个仅检测音频流并进行房间响度检测的小程序。
我的计划是使用 ffmpeg仅将音频流作为整数/浮点流获取到标准输出。这样我就可以在 Python 或 Go 中读取流作为回调并分析和解析。
我找到了一个例子:ffmpeg -i rtsp://some_url -c:a aac -c:v copy -hls_list_size 65535 -hls_time 2 "./live.m3u8"但这会将整个视频写入文件。任何建议如何改变它?
我也对其他语言的任何其他解决方案/包持开放态度,我可以做类似的事情

connection = RTSP('rtsp://url')
signal_array = connection.read_audio_frame()
请指教

最佳答案

通过添加 pipe: 可以使 ffmpeg 输出到标准输出。 .根据文档:

The accepted syntax is:

pipe:[number]

number is the number corresponding to the file descriptor of the pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr). If number is not specified, by default the stdout file descriptor will be used for writing, stdin for reading.


http://ffmpeg.org/ffmpeg-all.html#pipe
我个人会将其与命名管道(FIFO)结合使用:
mkfifo /tmp/videofifo
ffmpeg -i myfile.mp4 -f avi pipe: > /tmp/videofifo
with open("/tmp/videofifo", "rb") as f:
...
当然,对于您的用例,您使用 ffmpeg 命令,并在 "r" 中打开 fifo不是 "rb"模式。
使用 fifo 优于仅捕获标准输出(使用 subprocess.PIPE 直接在您的情况下(ascii 数据行)的优势可能很小,但在二进制数据的情况下似乎更清晰。无论如何,我更喜欢将数据与我的方式分开明白了。如果您只想直接处理标准输出,请使用 p = subprocess.Popen(cmd, stdout=subprocess.PIPE),然后处理 p.stdout,这是一个类似文件的对象。
毫无疑问,在 Go 中启动子进程有等效的方法,但令我感到羞耻的是,我现在根本不了解 Go。

关于python - 有没有办法使用 ffmpeg 将 RTSP 音频流仅流式传输到标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69766148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com