Ffmpeg实例,为视频添加一个循环播放的背景音乐(混声)


ffmpeg命令目录


方案1(不推荐)(混声)

ffmpeg -i E:\1\subtitle\out3.mp4 -i E:\1\subtitle\music3D.wav -filter_complex [1:a]aloop=loop=-1:size=2e+09[out];[out][0:a]amix -ss 0 -t 60 -y out.mp4

//输入视频,最好选一个大于一分钟的尝试
-i E:\1\subtitle\out3.mp4

//输入背景音,最好短一点,方便测试是否循环
-i E:\1\subtitle\music3D.wav

//滤镜
-filter_complex

//将背景音无限循环
[1:a]aloop=loop=-1:size=2e+09[out];

//将背景音和视频中的音频混合
[out][0:a]amix

//裁剪总时长,裁剪到60秒
-ss 0 -t 60

//输出
-y out.mp4

方案2(推荐)(混声)

ffmpeg -i video.mp4 -stream_loop -1 -i audio.wav -filter_complex [0:a][1:a]amix -t 60 -y out.mp4

其中
-stream_loop -1 -i audio.wav
-stream_loop -1 参数-1代表循环输入源
[0:a][1:a]amix 将0和1号的音频流进行混合
-t 60 裁剪60秒

方案3(推荐)(音频替换)

ffmpeg -an -i video.mp4 -stream_loop -1 -i audio.wav -t 60 -y out2.mp4

其中
-an -i video.mp4 代表消除视频中的音频

方案4(推荐)(音频替换,优化加快合成速度)

ffmpeg -an -i video.mp4 -stream_loop -1 -i audio.wav -c:v copy -t 60 -y out.mp4

-c:v copy 对视频流进行复制,不需要重新编解码(前提是输入流和输出流一致),速度极快

这里音频必须编码的原因在于,输入源是一个wav的音频,而最后输出MP4文件中需要一个aac的音频,所以必须重新编码,否则会报错。

方案5(原视频无音轨的情况)

为无音轨的视频添加一个循环的背景音乐
原视频无音轨的情况下不需要混声,直接导入两个源文件(源视频,背景音)

ffmpeg -i video_no_audio.mp4 -stream_loop -1 -i 世界这么大.wav -ss 0 -t 30 -y out.mp4
  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
### 回答1: Qt是一个功能强大的C++跨平台应用程序开发框架,可以用于开发各种类型的应用程序,包括视频播放器。ffmpeg一个开源的音视频解码库,可以对各种格式的音视频文件进行解码和编码。在Qt中,可以使用ffmpeg来实现视频播放功能。 要循环播放一个视频,需要在程序中实现如下步骤: 1. 使用Qt中的QMediaPlayer类来实现视频播放功能。QMediaPlayer类提供了很多方法来控制视频播放、暂停、停止等功能。 2. 使用QFileDialog类来打开视频文件。QFileDialog类是Qt中提供的一个对话框类,可以用来选择文件和目录。 3. 在QMediaPlayer类中设置循环播放模式。可以使用setMedia或setPlaylist方法来设置视频文件或播放列表,并使用setPlaybackMode方法来设置循环播放模式。 4. 在程序中实现播放完成后的回调函数。可以使用QMediaPlayer类的signals和slots机制来连接视频播放完成信号和处理函数。在处理函数中,通过设置QMediaPlayer类的状态为Stopped状态,然后重新播放视频来实现循环播放。 5. 在Qt应用程序中实现一个循环,用于处理事件和消息。可以使用QApplication类的exec方法来启动主循环。 6. 最后,编译和运行程序,在程序界面中选择要播放视频文件,程序将会自动循环播放视频。 ### 回答2: 要循环播放一个视频,可以使用Qt和FFmpeg库来实现。 首先,确保你已经成功地集成了Qt和FFmpeg库到你的项目中。 接下来,需要创建一个包含视频播放功能的Qt窗口。你可以使用Qt的视频播放器组件QMediaPlayer,或者使用FFmpeg提供的接口来实现自定义的播放器。 在窗口类的构造函数中,初始化视频播放器,并设置视频文件的路径。例如,使用QMediaPlayer的setMedia()函数来指定视频文件路径。 然后,将播放器与窗口中的视频显示区域关联起来。使用QMediaPlayer的setVideoOutput()函数,并传入一个用于显示视频的QWidget作为参数。 接下来,在Qt窗口的槽函数中,使用QMediaPlayer的play()函数来开始播放视频。 为了实现循环播放,可以在QMediaPlayer的信号finished()中重新播放视频。在finished()信号的槽函数中,调用QMediaPlayer的setPosition()函数,将视频播放位置重新设置为起始位置,然后再次调用play()函数开始重新播放。 最后,在窗口类的析构函数中,记得释放视频播放器的资源,例如调用QMediaPlayer的stop()函数停止播放,并释放关联的资源。 通过以上步骤,你就可以使用Qt和FFmpeg来实现循环播放一个视频了。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值