跳到正文

音视频数据流基础 · 第 5 篇

FFMpeg 命令记录

约 2 分钟音视频流基础#FFMpeg
目录FFprobeFFMpegFFplay

FFprobe

#1.查看视频流每一帧的pts dts pos
ffprobe -v error -select_streams v:0 \
  -show_entries packet=pts,dts,pos,size,flags \
  -of csv=p=0 input.mp4
  
#2.查看支持的sections
ffprobe -sections

#3.探测抽样首个数据包的所有底层暴露开放字段
ffprobe -v error -show_packets -of json input.mp4 | jq '.packets[0] | keys'

# 4. 查看 AAC 音频或 WAV 的详细容器格式信息:
ffprobe -show_streams input.aac

FFMpeg

# 1.将 MP4 容器直接秒级无损洗稿为流式基因的 FLV 容器
ffmpeg -i input.mp4 -c:v copy -c:a copy output.flv

# 2.提取音轨并强制其接受 HEVC(H.265) 规范的残忍重编码打磨,
ffmpeg -i input.mp4 -map 0 -c:v libx265 /tmp/output.ts

# 3.提取 AAC(保持原始编码,不重新压缩):
ffmpeg -i input.mp4 -vn -c:a copy output.aac

# 4. 从视频中提取音频并转为 WAV(解压缩为 PCM):
ffmpeg -i input.mp4 -vn -c:a pcm_s16le output.wav

# 5. 提取为无任何头部的裸 PCM 数据(S16LE):
ffmpeg -i input.mp4 -vn -c:a pcm_s16le -f s16le output.pcm

# 6. 将 WAV 压缩为带 ADTS 头的 AAC 裸流:
ffmpeg -i input.wav -c:a aac -b:a 128k -f adts output.aac

# 7. 从容器提取h264 流
ffmpeg -i input.mp4 -c:v copy -an -sn output.h264


# 8. 将视频导出为裸的 YUV420P(I420)数据:
ffmpeg -i input.mp4 -pix_fmt yuv420p -f rawvideo output.yuv

# 9. 截取第一帧导出为 YUV:
ffmpeg -i input.mp4 -vframes 1 -pix_fmt yuv420p frame.yuv

# 10. 查看视频原本的底层像素格式:
ffprobe -v error -select_streams v:0 -show_entries stream=pix_fmt,width,height -of default=nw=1 input.mp4

# 11. 将 yuv420p 裸数据无损转换为 nv12 格式:
ffmpeg -pix_fmt yuv420p -s 1280x720 -i yuv420p.yuv -pix_fmt nv12 nv12_ffmpeg.yuv

FFplay

#1. 强行播放YUV数据
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 output.yuv

音视频数据流基础

共 5 篇

  1. H264流
  2. 音频流基础:PCM、WAV 与 AAC 编码深度解析
  3. 视频底层密码:YUV 颜色空间、内存对齐与格式转换揭秘
  4. 音视频容器格式剖析:MP4、FLV 与 TS
  5. FFMpeg 命令记录