首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Python中解释ffmpeg输出

在Python中解释ffmpeg输出
EN

Stack Overflow用户
提问于 2020-06-10 09:43:53
回答 1查看 455关注 0票数 0

我开始在FFmpeg中工作,我想创建一个列表,其中将包含静默间隔的开始和结束时间戳。我确实使用FFmpeg输出了这些间隔,但我需要格式化输出,使其看起来更具可读性,这就是为什么我要创建一个列表,然后使用一个自定义函数打印它。我知道我应该在这里使用正则表达式,但是我不确定我应该如何编写它,也不确定我应该如何阅读FFmpeg控制台输出。我的静默检测函数如下所示:

代码语言:javascript
运行
AI代码解释
复制
def detect_silence_ffmpeg():
    command = r"ffmpeg -i audio.wav -af silencedetect=n=-40dB:d=0.5 -f null - "
    subprocess.call(command, shell=True)

此函数在7秒长的样本视频上的输出为:

代码语言:javascript
运行
AI代码解释
复制
ffmpeg version git-2020-06-03-b6d7c4c Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.1 (GCC) 20200523
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 49.100 / 56. 49.100
  libavcodec     58. 90.100 / 58. 90.100
  libavformat    58. 44.100 / 58. 44.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 84.100 /  7. 84.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'audio.wav':
  Metadata:
    encoder         : Lavf58.44.100
  Duration: 00:00:07.34, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf58.44.100
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc58.90.100 pcm_s16le
[silencedetect @ 00000202fc71e680] silence_start: 0
[silencedetect @ 00000202fc71e680] silence_end: 1.16374 | silence_duration: 1.16374
[silencedetect @ 00000202fc71e680] silence_start: 1.94558
[silencedetect @ 00000202fc71e680] silence_end: 3.41345 | silence_duration: 1.46787
[silencedetect @ 00000202fc71e680] silence_start: 3.8578
[silencedetect @ 00000202fc71e680] silence_end: 5.84844 | silence_duration: 1.99063
[silencedetect @ 00000202fc71e680] silence_start: 6.43653
size=N/A time=00:00:07.33 bitrate=N/A speed= 308x    
video:0kB audio:1264kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[silencedetect @ 00000202fc71e680] silence_end: 7.33868 | silence_duration: 0.902154

这段代码应该在一个小时左右的视频上实现,所以我真的需要找到一种方法来格式化这个输出,比这个更好。这将是它,任何帮助将非常感谢:)

附言:我们的想法是,这应该主要在Windows上工作,但如果跨平台也是可能的,那就太好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 22:10:59

我找到了答案。可以执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
command = r"ffmpeg -i audio.wav -af silencedetect=n=-40dB:d=0.5 -f null - "
out = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

stdout, stderr = out.communicate()

这样,stdout变量将成为代表控制台上的输出的字符串。当然,这需要导入子流程模块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62300504

复制
相关文章
Python在windows CMD中输出中文
在windows CMD中输出中文是比较烦的事情,最简单的就是增加一个windows.py,用的时候import一下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys class UnicodeStreamFilter: def __init__(self, target): self.target = target self.encoding = 'utf-8' self.erro
happy123.me
2018/06/04
2.5K0
Vulkan 在 FFmpeg 中的支持
其中提到 FFmpeg 引入了 Vulkan 驱动的新滤镜,用于视频水平、垂直翻转。
音视频开发进阶
2022/03/11
1.4K0
Vulkan 在 FFmpeg 中的支持
Python 教程之输入输出(1)—— 在 Python 中接受输入
开发人员经常需要与用户交互,以获取数据或提供某种结果。今天的大多数程序都使用对话框来要求用户提供某种类型的输入。而 Python 为我们提供了两个内置函数来读取键盘输入。
海拥
2022/09/16
1.7K0
Python 教程之输入输出(1)—— 在 Python 中接受输入
JVM 日志输出参数 [-XX:+PrintGCDetails] 解释
连起来看 运行时间: [GC类型 (原因)] [收集器类型: GC前该内存区域已经使用容量->GC后该内存区域已使用容量(该内存区域总容量)] GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量), 执行时间 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
潇洒
2023/10/20
9170
ffmpeg常用命令及解释
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
望天
2019/10/22
7900
在Android logcat中打印FFmpeg调试信息
在FFmpeg源码中的ffmpeg.c文件的main函数中有avlogsetcallback的调用,而logcallback_null是个空的回调函数,一个思路是可以直接在该回调函数写打印代码:
用户1205080
2018/12/05
1.6K0
在Android logcat中打印FFmpeg调试信息
ffmpeg常用命令及解释
-c -c:v -c:a 设置音视频codec,帮助见ffmpeg -encoders
望天
2019/09/29
6590
ffmpeg常用命令及解释
Python中输入和输出[通俗易懂]
格式:result = raw_input(‘提示信息’)
全栈程序员站长
2022/07/01
8600
Python中输入和输出[通俗易懂]
python中输入输出
一个程序要进行交互,就需要进行输入,进行输入→处理→输出的过程。所以就需要用到输入和输出功能。同样的,在Python中,怎么实现输入和输出?
全栈程序员站长
2022/09/07
7510
python中输入输出
FFmpeg代码导读——HEVC在RTMP中的扩展
为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具体修改内容见下。
LiveVideoStack
2021/09/02
1.8K0
FFmpeg代码导读——HEVC在RTMP中的扩展
Ffmpeg 配置输出日志到指定文件
云函数(SCF) 一个主要场景就是跑视频任务,比如视频转码、推流等,常用方法就是基于 ffmpeg 来执行。
keke.wang
2022/09/26
2.5K0
Python中的输出「建议收藏」
Python输出语句是print,但是python2.x与3.x又有点区别。python2.x输出 print “xxx”能成功执行,而3.x不行,所以建议大家用print(“xxx”)
全栈程序员站长
2022/09/07
1.8K0
在MapReduce中利用MultipleOutputs输出多个文件
用户在使用Mapreduce时默认以part-*命名,MultipleOutputs可以将不同的键值对输出到用户自定义的不同的文件中。
星哥玩云
2022/07/03
2.2K0
在MapReduce中利用MultipleOutputs输出多个文件
Python中 __init__的通俗解释
作为典型的面向对象的语言,Python中 类 的定义和使用是不可或缺的一部分知识。对于有面向对象的经验、对类和实例的概念已经足够清晰的人,学习Python的这套定义规则不过是语法的迁移。但对新手小白而言,要想相对快速地跨过__init__这道坎,还是结合一个简单例子来说比较好。
计算机与AI
2020/12/14
1K0
Python中 __init__的通俗解释
ffmpeg mp4解码管道输出的问题
上面主进程读取的字节数如下:共,2834行,与理想的166帧166行相差甚远,每帧560*320*3=537600也和下面的不一样。
shirishiyue
2020/10/13
2.1K0
SkeyeExPlayer(Windows)开发之ffmpeg log输出报错
SkeyeExPlayer主要基于ffmpeg进行开发,在SkeyeExPlayer开发过程中,曾遇到一个相对比较棘手的问题,该问题一般在播放不是很标准的流或者网络情况较差,容易出现丢帧的情况特别容易出现;
Openskeye
2023/04/17
2990
python中打印输出date信息
hostname = commands.getoutput('hostname')
py3study
2020/01/08
1.4K0
WordPress在RSS Feed 中输出版权信息
不多说,这个功能主要是为了防止文章被恶意采集而产生的;当然,如果人家是直接复制粘贴来采集你的文章的话,这个功能就没意义了。防得了小偷防不了小人~~下面献上本站DeveWork.com 使用的代码。打开
Jeff
2018/01/19
8380
让WordPress 在RSS 中Feed 截断文字输出
本文是《让WordPress 在RSS 中Feed 输出支持“More”标签》的姊妹篇,相信你也知道,WordPress摘要输出文章是惨不忍睹的,但是全文输出又不和博主的意愿。我们可以截断部分文字输出,配合加上版权信息,完美解决! 要截断文字输出的话,相信你也知道了,是用 mb_strimwidth 函数,下面直接献上Jeff的代码吧——Jeff的阳台 就是用这段代码的: //在RSS 中Feed 截断文字输出 devework.com function dw_readmore_rss( $content
Jeff
2018/01/19
2.1K0
让WordPress 在RSS 中Feed 截断文字输出
点击加载更多

相似问题

Python ffmpeg显示输出

13

在存储之前在python中捕获FFmpeg输出

31

如何解释ffmpeg -pix_fmts输出?

12

用Python解释输出

10

解释Python列表输出

220
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档