ffmpeg命令行记录

windows比较完整的编译版本

https://www.gyan.dev/ffmpeg/builds/#release-builds

1. 修改mp4的tbn

-video_track_timescale 30000

2. mp4解码为nv12

ffmpeg -i dy_rcv.mp4 -pix_fmt nv12 -s 1280x720 dy_rcv.yuv

3.ffplay播放nv12

ffplay -pix_fmt nv12 -s 1280x720 dy_rcv.yuv

4.ffmpeg将mp4转码成固定帧率和帧间隔,没有b帧的h264

ffmpeg.exe -i in_1080p.mp4 -c:v libx264 -bf 0 -b_strategy 0 -s 1280x720 -r 30 -keyint_min 60 -g 60 -sc_threshold 0 -b:v 2M -an 720p_30fps_2Mbps.h264

-bf 最大连续B帧数;调高此值,理论上可提升压缩比,但影响编码速率;一般在使用帧级并行编码时,逻辑CPU核数 = bf + 1;

-b_strategy B帧生成策略,控制P帧与B帧的决策;调高此值,更精确的判定是否使用B帧,但影响编码速率;设置为1,可较好的平衡编码速率与压缩比;

-keyint_min为最小关键帧间隔,我这里设置为60帧;

-sc_threshold这个命令会根据视频的运动场景,自动为你添加额外的I帧,所以会导致你编出来的视频关键帧间隔不是你设置的长度,这是只要将它设为0

5. 提取PCM音频

ffmpeg.exe -i in.ts -ar 16000 -ac 1 -vn -f s16le out.pcm

6.发送rtp流

ffmpeg -re -i 1.h265 -c:v copy -payload_type 97 -f rtp rtp://192.168.xxx:6006?pkt_size=1165

使用sdp文件播放

v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.xxx
t=0 0
a=tool:libavformat 56.40.101
m=video 6006 RTP/AVP 97
a=rtpmap:97 H265/90000
a=fmtp:97 sprop-vps=QAEMAf//IUAAAAMAAAMAAAMAAAMAlqwJ; sprop-sps=QgEBIUAAAAMAAAMAAAMAAAMAlqAB4CACIHxOWtKQlkuMBAQAAAMABAAAAwBlgBd5RAAAmJaAAACYloBA; sprop-pps=RAHA98DMkA==
ffplay.exe -protocol_whitelist "file,crypto,data,rtp,udp" 1.sdp

7.编码h264,设置一帧的slice个数

ffmpeg.exe -i D:\1.h264 -c:v libx264 -slices 8  -y D:\8slice.h264

8.编码h265,设置一帧的slice个数

ffmpeg.exe -i D:\1.h265 -c:v libx265 -x265-params  "slices=8" -y D:\8slice.h265

9.视频质量评估

1.从视频文件中,取出一帧YUV
ffmpeg.exe -ss 00:03:00 -i INPUT.mp4 -frames 1 src.yuv

2.ffplay播放一个yuv
ffplay.exe -pixel_format yuv420p -video_size 3840x2160 src.yuv -x 1920 -y 1080

3.计算两个YUV之间的psnr
ffmpeg.exe -pixel_format yuv420p -video_size 3840x2160 -i src.yuv -pixel_format yuv420p -video_size 3840x2160 -i compare.yuv -lavfi psnr="stats_file=psnr.log"  -f null  -

4. 计算两个YUV之间的ssim
ffmpeg.exe -pixel_format yuv420p -video_size 3840x2160 -i src.yuv -pixel_format yuv420p -video_size 3840x2160 -i compare.yuv -lavfi ssim="stats_file=ssim.log"  -f null  -

psnr
n:1 mse_avg:219.36 mse_y:308.13 mse_u:76.99 mse_v:6.63 psnr_avg:24.72 psnr_y:23.24 psnr_u:29.27 psnr_v:39.91 
ssim
n:1 Y:0.542310 U:0.784465 V:0.947742 All:0.650241 (4.562315)

10.tcp方式发送和播放

推流
ffmpeg.exe -re -i D:\Beyond.wav -c copy -f flv tcp://localhost:8888/1

播放
ffplay.exe -listen 1 -i tcp://localhost:8888/1

或者

ffmpeg.exe -re -i D:\Beyond.mp3 -c copy -f mp3 tcp://localhost:8888/1
ffplay.exe -listen 1 -i tcp://localhost:8888/1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值