ffmpeg简单使用
前言
FFmpeg 是视频处理最常用的开源软件。
它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。
操作注意
所有文件名不能包含中文或空格等特殊符号
将avi转成mp4
复制ffmpeg -i input_filename.avi -c:v copy -c:a copy -y output_filename.mp4
生成m3u8(索引文件)和ts文件
复制ffmpeg -i output_filename.mp4 -hls_time 10 -hls_list_size 0 -hls_segment_filename ./hls/lucene_%05d.ts ./hls/lucene.m3u8
ts文件转mp4
某些播放器对 ts 文件支持的不是很好,快进等功能会卡住
复制ffmpeg -i input_filename.ts -c:v copy -c:a copy -y output_filename.mp4
合并mp3
第一种方法
复制ffmpeg -i "concat:1.mp3|2.mp3" -c copy merge.mp3
第二种方法,创建mylist.txt文件
复制file C:/D-myfiles/testjar/ffmpeg/1.mp3
file C:/D-myfiles/testjar/ffmpeg/2.mp3
复制.\ffmpeg.exe -f concat -safe 0 -i C:/D-myfiles/testjar/ffmpeg/mylist.txt -c copy merge.mp3
copy表示直接复制,不经过重新编码(这样比较快),这种方式只能拼接相同编码的视频。
处理进度查询
复制.\ffmpeg.exe -progress progress.log -f concat -safe 0 -i C:/D-myfiles/testjar/ffmpeg/mylist.txt -c copy merge.mp3
ffmpeg会将处理进度保存到progress.log文件中。
常用的视频编码格式
- H.262
- H.264
- H.265
常用的音频编码格式
- MP3
- AAC
查看视频和音频编码
复制ffprobe 1.mp3
复制Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 64 kb/s (default)
编码方式为ACC(封装格式为MP4A)
复制ffprobe -v error -hide_banner -show_streams -of json -i 0.mp3
ffprobe -v error -hide_banner -select_streams a:0 -show_streams -of json -i 1.mp4 # 仅显示文件的音频流信息
ffprobe -v error -hide_banner -select_streams v:0 -show_streams -of json -i 1.mp4 # 仅显示文件的视频流信息
去除所有关于输入、元数据和持续时间,去除版本信息、build信息等,显示流信息,格式为json
复制{
"streams": [
{
"index": 0,
"codec_name": "mp3",
"codec_long_name": "MP3 (MPEG audio layer 3)",
"codec_type": "audio",
"codec_time_base": "1/44100",
"codec_tag_string": "[0][0][0][0]",
"codec_tag": "0x0000",
"sample_fmt": "s16p",
"sample_rate": "44100",
"channels": 2,
"channel_layout": "stereo",
"bits_per_sample": 0,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/14112000",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 11693019744,
"duration": "828.587000",
"bit_rate": "128000",
"disposition": {
"default": 0,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0,
"timed_thumbnails": 0
}
}
]
}
codec_name为编码名称,如果文件为视频,streams会有两条
aac转mp3
复制ffmpeg -i 1.mp3 -acodec libmp3lame 2.mp3
合并mp3(不同编码格式)
尝试了 使用ffmpeg拼接视频踩坑记录 中的concat filter用法,也不行,就算先将编码转换成mp3也不行。
花费了很久都没找到解决方法,可能ffmpeg能实现,但没找到具体的用法。
最终使用剪映(字节出品)来拼接音频,导出音频,终于解决了,虽然不太优雅。
参考
下载地址-github
ffmpeg官网
FFmpeg常用基本命令行-csdn
FFmpeg 视频处理入门教程-阮一峰
FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe
ffprobe综合教程(内含7个示例)
ffmpeg mp4 mp3 wav flac webm aac ac3 ogg格式转换
使用ffmpeg拼接视频踩坑记录
ffmpeg concat video and mix audio
ffmpeg第1篇:日志级别控制、保存日志到指定文件、处理进度查询