ffprobe工具介绍
-
查看帮助信息:ffprobe --help
使用方式:ffprobe [OPTIONS] [INPUT_FILE]
-
查看多媒体数据包:
ffprobe -show_packets output.mp4
ffprobe -show_packets -show_data output.mp4
-
查看封装格式:ffprobe -show_format output.mp4
-
查看视频文件的帧信息:ffprobe -show_frames output.mp4
-
查看视频文件的流信息:ffprobe -show_streams output.mp4
-
格式化显示:
ffprobe -of json -show_format output.mp4
ffprobe -print_format csv -show_packets output.mp4 > outmp4.csv
Windows下使用Elecard StreamEyes 查看MP4视频文件
ffplay工具介绍
-
查看帮助信息:ffplay --help
使用方法:ffplay [options] input_file
-
播放本地流:ffplay -window_title "TestPlay" output.mp4
-
播放网络流:ffplay http://220.161.87.62:8800/hls/1/index.m3u8
-
使用示例:
ffplay -x 1024 -y 768 -an output.mp4
-x 1024 # 将播放宽度设置为 1024 -y 768 # 将播放高度设置为 768 -an # an = audio null 设置为静音播放
ffplay -ss 10 -t 5 -fs -loop 2 output.mp4
-ss # 播放的开始时间 -t # 播放的持续时长 -fs # 全屏 -loop # 指定循环次数
ffplay -f rawvideo -video_size 320x240 320x240_video.yuv
-f # 指定视频格式 rawvideo 原始数据 -video_size # 设置视频的大小
Windows 下使用 YUVPlayer-Deluxe 查看YUV 文件
分解/复用命令
-
处理流程
_______ ______________ ________ | | | | | | | input | demuxer | encoded data | muxer | output | | file | ---------> | packets | -------> | file | |_______| |______________| |________|
-
处理命令
-
mp4 转 avi:
ffmpeg -i input.mp4 -vcodec copy -acodec copy out.avi
-i # 输入文件 -vcodec # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式) -acodec # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式)
-
提取音频:
ffmpeg -i input.mp4 -vn -c:a copy out.aac
-c:a # 设置音频编码器,与-acodec一致 -vn # video null 禁用视频
-
提取视频:
ffmpeg -i input.mp4 -an -c:v copy out.h264
-c:v # 设置视频编码器,与-acodec一致 -an # audio null 禁用音频
-
封装音视频:
ffmpeg -i out.aac -i out.h264 -acodec copy -vcodec copy -f mp4 new.mp4
ffmpeg -i out.aac -i out.h264 -c copy -f mp4 new.mp4
-i # 输入文件 -acodec # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式) -vcodec # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式) -f # 指定合成格式
-
-
编码 / 解码命令
-
提取 YUV 数据:
ffmpeg -i input.flv -an -c:v rawvideo -pix_fmt yuv420p out.yuv
-pix_fmt # 设置像素格式 -c:v # 设置视频编码器,与-acodec一致 rawvideo 原始数据
播放 out.yuv:
ffplay -video_size 1280x720 out.yuv
-video_size # 指定视频的大小
-
提取PCM数据:
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
-i # 输入文件 -vn # video null 禁用视频 -ar # 设置音频采样率 -ac # 设置音频通道数目 -f # 指定pcm文件数据格式 s16le 有符号16位的小端数据
播放PCM数据:
ffplay -ar 44100 -ac 2 -f s16le out.pcm
-ar # 设置音频采样率 -ac # 设置音频通道数目 -f # 指定pcm文件数据格式 s16le 有符号16位的小端数据
-
使用 h264 编码压缩 YUV 数据:
ffmpeg -video_size 1280x720 -i out.yuv -vcodec h264 out.h264
-video_size # 指定视频的大小 -i # 输入文件 -vcodec # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
-
使用 fdk_aac 编码压缩 PCM 数据:
ffmpeg -ar 44100 -ac 2 -f s16le -i out.pcm -acodec libfdk_aac out.aac
-ar # 设置音频采样率 -ac # 设置音频通道数目 -f # 指定pcm文件数据格式 s16le 小端格式 -i # 输入文件 -acodec # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式)
-
-
裁剪 / 合并命令
-
裁剪:
ffmpeg -ss 00:00:00 -t 10 -i input.mp4 -vcodec copy -acodec copy 1.ts
-ss position # 跳转到输入文件的position位置,可以是秒数或者hh:mm:ss形式 -t duraion # 读取到文件的duration位置,可以是秒数或者hh:mm:ss形式 -acodec # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式) -vcodec # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
ffmpeg -ss 00:00:10 -t 8 -i input.mp4 -vcodec h264 -acodec libfdk_aac 2.ts
-ss position # 跳转到输入文件的position位置,可以是秒数或者hh:mm:ss形式 -t duraion # 读取到文件的duration位置,可以是秒数或者hh:mm:ss形式 -acodec # 设置音频编码器,也用作 -codec:a (以'h264'编码方式) -vcodec # 设置视频编码器,也用作 -codec:v (以'libfdk_aac'编码方式)
-
合并input.txt的视频文件列表
ffmpeg -f concat -i input.txt -vcodec copy -acodec copy new.ts
# input.txt格式: file '1.ts' file '2.ts' -f # 指定合并命令 -i # 输入文件 -acodec # 设置音频编码器,也用作 -codec:a ('copy' 拷贝原音频编码方式) -vcodec # 设置视频编码器,也用作 -codec:v ('copy' 拷贝原视频编码方式)
-