构架流媒体服务器还是从事跟流媒体音视频相关的工作就会发现ffmpeg一款必备的强大的工具及解决方案。
什么是ffmpeg
FFmpeg是一套可以用来记录、转换数字音频流、视频流的解决方案。它包括了最新的音视频编解码库,并提供丰富的音视频流处理类库以及强大的流媒体工具。简单说,流媒体解决方案就靠它了。
ffmpeg的组成
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
libavcodec:用于各种类型声音/图像编解码;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、色彩映射转换;
libpostproc:用于后期效果处理;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
常用ffmpeg指令
#ffmpeg切片:用于将大的视频文件按照hls协议切片分割
ffmpeg -i 1.mp4 -c copy -bsf h264_mp4toannexb -fsegment -segment_list index.m3u8 -segment_time 1 %02d.ts
#ffmpeg压缩视频:用于将大的视频文件按照指定的格式和码率压缩
ffmpeg -i 1.mp4 -b 200K -s 640x320 out.mp4
#ffmpeg提取单帧画面:用于从视频文件中提取缩略图
ffmpeg -ss 00:01:06 -i 1.mp4 -f image2 -y thumb.jpg
#ffmpeg提取音频:用于从视频文件中分离音频mp3文件
ffmpeg -i 1.mp4 -f mp3 -vn -y audio.mp3
#ffmpeg推流:用户将本地视频或者网络视频推向新的流媒体服务器
ffmpeg -re -i 1.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost/live/video
暂时先罗列这些常用指令,后继陆续更新。