音视频开发

流媒体

推流

本地客户端产生流 -> rtmp服务器 -> 客户端

ffmpeg

应用场景:

音视频分析

# 分析视频格式.\ffprobe.exe D:\转笔视频\2017合片\转笔探讨2017转笔合片.mp4 -show_format[FORMAT]nb_streams=2nb_programs=0format_name=mov,mp4,m4a,3gp,3g2,mj2format_long_name=QuickTime / MOVstart_time=0.000000duration=166.848000size=211236984bit_rate=10128355probe_score=100TAG:major_brand=mp42TAG:minor_version=0TAG:compatible_brands=mp42mp41TAG:creation_time=2017-01-26T12:13:08.000000Z[/FORMAT]
# 分析音频内容.\ffprobe.exe D:\转笔视频\2017合片\转笔探讨2017转笔合片.mp4 -show_streams[STREAM]index=0 //流的索引号codec_name=h264 //流的编码名codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 //流的编码详细描述profile=High //流的profilecodec_type=video //流的codec类型codec_tag_string=avc1 // 流的codec tag 字符串codec_tag=0x31637661 // 流的codec tag,也是字符串,只不过以16进制方式存储width=1920 //视频的宽,流内容部分height=800 //视频的高,流内容部分coded_width=1920 // 编码视频的宽,编解码时的部分,对齐的数据,显示时不用coded_height=800 // 编码视频的高,编解码时的部分,对齐的数据,显示时不用has_b_frames=2 // IPB 帧排列时两个P之间包含两个Bsample_aspect_ratio=1:1 //像素点采样比例display_aspect_ratio=12:5 // 显示图像比例pix_fmt=yuv420p // 像素点格式level=40 // 与profile一起出现,对应的是参考标准中有对应的参数描述color_range=unknown //调色必备参数color_space=unknown //调色必备参数color_transfer=unknown  //调色必备参数color_primaries=unknown //调色必备参数field_order=progressive // 隔行扫描逐行扫描标识r_frame_rate=24/1  // 实际帧率avg_frame_rate=24/1 // 平均帧率time_base=1/24 //时间基,通常和帧率有对应关系start_pts=0 // 开始时间戳start_time=0.000000 // 开始时间duration_ts=17620 //duration 时间戳duration=734.166667 // duration 时间bit_rate=7862427 // 码率max_bit_rate=N/A // 最大码率bits_per_raw_sample=8 // 原始数据每个采样占位nb_frames=17620 // 总帧数extradata_size=42 // extradata 大小TAG:language=eng // 这个是TAG,主要是展示语种TAG:handler_name=VideoHandle // 句柄名TAG:vendor_id=FFMP // 生成MP4文件的工具TAG:encoder=libx264 // 视频编码器标识[/STREAM]
# 可以将音视频的所有包都列出来.\ffprobe.exe D:\转笔视频\2017合片\转笔探讨2017转笔合片.mp4 -show_packets# 分析音视频帧.\ffprobe.exe D:\转笔视频\2017合片\转笔探讨2017转笔合片.mp4 -show_frames

ffmpeg公共参数

通用:

视频操作:

音频操作: