python ffmpeg播放视频,ffmpeg视频音频合成命令

  python ffmpeg播放视频,ffmpeg视频音频合成命令

  本文主要介绍python使用ffmpeg合成视频和音频。通过本文的学习,我们可以帮助你了解如何在Python中调用ffmpeg模块,将音频和视频结合起来完成视频合成。有需要的朋友可以参考一下。

  最近用录屏软件录桌面。在使用的过程中,我突发奇想。可以用python做屏幕记录工具,锻炼动手能力吗?

  接下来,我将撰写一系列关于如何使用python作为屏幕录制工具的文章:

  录制屏幕制作视频

  录制音频

  复合视频、音频

  基于pyqt5制作可视化窗口

  关于以上四个部分,希望能尽快完善。前两篇文章分享了使用opencv制作屏幕录制部分,使用PyAudio录制音频。本文分享了如何使用ffmpeg将同时录制的屏幕视频和音频合成为声音屏幕视频。

  

应用平台

 

  windows 10 python 3.7 ffmpeg

音视频合成

 

  python中有很多合成音视频的第三方包,操作方法各不相同,有的简单,有的略复杂。

  一开始也想过用moviepy中文文档,它的门槛比ffmpeg小很多。查阅相关资料后,目前考虑的是将音频和视频合并成一个声音视频,而ffmpeg有录制视频的功能,效果比cv2 ImageGrab要好,所以使用ffmpeg作为合成工具,使用ffmpeg.exe的下载路径和用户手册。

  在python下使用ffmpeg,可以直接调用命令行工具,也可以使用封装的第三包。

  pip安装ffmpeg-python

  使用的参数与ffmpeg相同,不同的是使用后需要键入终止条件来结束ffmpeg的运行。

  将cv2的屏幕录制更改为ffmpeg录制

  导入ffmpeg

  #屏幕录制屏幕尺寸

  宽度=1920

  身高=1080

  #录制帧速率。在cv2录制中,发现帧率相对固定且较小,主要是因为ImageGrab之间的间隔稍长。

  #这里可以调大一点。当然,固件越大,性能越好。建议在15到60(含)之间。

  fps=30

  #录制屏幕是否包含鼠标,0:否,1:是。

  #录音模式为gdigrab模式,包括录音过程中鼠标会看到鼠标频闪的现象,可以通过搜索模块插件解决。

  draw_mouse=0

  #屏幕录制偏移距离

  offset_x=0

  offset_y=0

  #文件名

  filename=test.mp4

  #录制桌面

  流程=(

  ffmpeg .输出(

  ffmpeg.input(

  文件名=桌面,格式=gdigrab ,帧率=fps,offset_x=offset_x,offset_y=offset_y,

  draw_mouse=draw_mouse,s=f“{ width } x { height }”),

  文件名=文件名,pix_fmt=yuv420p

  ).覆盖_输出()

  )

  # cmd: ffmpeg路径,如果没有设置,会在环境变量下搜索ffmpeg。

  #您可以将ffmpeg.exe直接下载到项目文件目录中。

  ffmpeg_path=ffmpeg.exe

  process . run _ async(cmd=ffmpeg _ path,pipe_stdin=True,pipe_stdout=False,pipe_stderr=False)

  #自定义延迟功能

  延迟()

  #传入中断参数。打电话之前,尽量之前有足够的延迟。

  process.communicate(str . encode( q ))

  process.terminate()

  

合成音视频

 

  #传入视频路径

  video_path=mp4_test.mp4

  #输入音频路径

  audio_path=mp3_test.mp3

  #生成的视频名称不应与上述路径一致。

  output_path=mixer.mp4

  流程=(

  ffmpeg .输出(

  ffmpeg.input(文件名=视频路径),

  ffmpeg.input(文件名=

  audio_path),

   filename=output_path, vcodec=copy, acodec=aac, strict=experimental, pix_fmt=yuv420p

   ).overwrite_output()

  ffmpeg_path = ffmpeg.exe

  process.run_async(cmd=ffmpeg_path, pipe_stdin=True, pipe_stdout=False, pipe_stderr=False)

  time.sleep(1)

  process.communicate(str.encode("q"))

  process.terminate()

  

  ps: 上述方法也可以封装到类中,方便pyqt5窗口的实现。

  看到这里可能会想到,有音频录制,视频录制,音视频合成,但是不好让音视频分开录制,导致音视频不同步,看起来也别扭,下面就来实现将两者同时录制同时结束。

  可沿用录制屏幕制作视频(推荐用本篇下方的代码),录制音频 两篇里的代码,将关于键盘监听部分注释掉,避免冲突。

  

from threading import Thread

 

  利用三组线程,当该代码运行时就会监听键盘按键,同时录制音频、视频,当按下t键结束录制,保存音视频。

  

总结

 

  通过音视频分线程录制,保证两个文件的时长一致且同步的情况,在这过程中学习了如何在python中调用ffmpeg模块,对此进行音视频合并,完成视频合成。

  远处的峰亦不能遮挡看到山后的风景。

  于二零二二年四月十七日作

  ffmpeg录屏源代码:

  

"""

 

  到此这篇关于Python使用ffmpeg合成视频、音频的文章就介绍到这了,更多相关python ffmpeg合成视频音频内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: