ffmpeg相关操作总结

本文介绍了FFmpeg库的主要组件及其功能,如libavcodec、libavformat等,并展示了如何使用FFmpeg进行音频格式转换、视频裁剪和合并。具体操作包括改变采样率、裁切指定时间段的视频、合并多个视频片段以及音频剪切与拼接。还提供了一个Python类用于将MP4视频转换为16kHz的WAV文件。
摘要由CSDN通过智能技术生成

0.FFmpeg 库及其作用

  • libavcodec:提供了一系列编码器的实现。
  • libavformat:实现了流协议、容器格式和基础的 IO 访问。
  • libavutil:包括了哈希器、解码器和各种工具函数。
  • libavfilter:提供了各种音视频过滤器。
  • libavdevice:提供了访问捕获设备和回放设备的接口。
  • libswresample:实现了混音和重采样。
  • libswscale:实现了色彩转换和缩放功能。

1.改变采样率,音频格式转换

将.mp3转为采样率为16000,通道数为1,.wav形式音频

ffmpeg -i jjxrcj5_51591148xi.mp3 -ac 1 -ar 16000 -y my.wav

将.flv转为mp4

ffmpeg -i "input.flv" -c copy "output.mp4"

2.使用ffmpeg裁剪和合并视频

剪切视频

使用 -ss 和 -t 选项,从第0秒开始,向后截取31秒视频,并保存

ffmpeg -ss 00:00:00 -i video.mp4 -vcodec copy -acodec copy -t 00:00:31 output1.mp4

从第01:33:30 开始,向后截取 00:47:16 视频,并保存

ffmpeg -ss 01:33:30 -i video.mp4 -vcodec copy -acodec copy -t 00:47:16 output2.mp4

合并视频

  使用 TS格式拼接视频

 先将 mp4 转化为同样编码形式的 ts 流,因为 ts流是可以 concate 的,先把 mp4 封装成 ts ,然后 concate ts 流, 最后再把 ts 流转化为 mp4。

ffmpeg -i output1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output1.ts
ffmpeg -i output2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output2.ts
  为了减少命令的输入,需要一个filelist.txt文件,里面内容如下

file 'output1.ts'
file 'output2.ts'
    合并视频命令

ffmpeg -f concat -i filelist.txt -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4

mp4转换为指定的wav文件ffmpeg

ffmpeg -i output1.mp4 -ar 16000 -vn /home/test.wav

3.使用ffmpeg剪切和合并音频

剪切:-segment_time 10 表示 10s一切,-c copy ch01%02d.wav表示保存为ch0100开头,

ffmpeg -i 第01集_火星的呼吸.wav -f segment -segment_time 10 -c copy ch01%02d.wav

音频拼接和视频拼接操作差不到,需要先把文件列表写入到文本中。

ffmpeg -f concat -i  list.txt -c copy "test.wav"

其中list.txt文件格式为

待拼接音频列表

4.将视频MP4转为16kHZ音频

class Mp4_to_Wav:
    def mp4towav(self, filepath, outpath):
        '''
        :param filepath: 输入的mp4视频位置
        :param outpath: 输出的wav文件位置
        :return:
        '''
        command = "ffmpeg -i" + " " + filepath + " " + "-ar 16000 -vn" + " " + outpath + ".wav"
        subprocess.call(command,shell=True)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值