Aliens

FFmpeg

December 13, 2023

转换视频格式

  1. .flv/.mp4 等格式的视频转化为原始的.h264视频
1
2
# https://stackoverflow.com/questions/19300350/extracting-h264-raw-video-stream-from-mp4-or-flv-with-ffmpeg-generate-an-invalid
ffmpeg -i test.flv -vcodec copy -an -bsf:v h264_mp4toannexb test.h264

或者简单一点,

1
ffmpeg -i testsrc.mp4 -c:v copy output.h264

注意,输出的文件名必须以.h264结尾。

同理,想要获取 .h265 格式的视频,可以使用,

1
ffmpeg -i testsrc.mp4 -c:v copy output.h265

需要注意,原始视频testsrc.mp4必须是h264格式的,才能获取h264内容,不能转化为h265内容。

  1. 将视频转化为.yuv格式
1
2
# https://stackoverflow.com/questions/20609760/convert-h264-video-to-raw-yuv-format
ffmpeg -i video.mp4 -c:v rawvideo -pix_fmt yuv420p out.yuv

另外,以下是计算生成的.yuv文件大小的方法:

a. 使用ffprobe video.mp4查看文件信息 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 34 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default) b. 那么文件的大小为:320x240x25x1.5x30 - 320, 240: 图像长宽 - 25: fps - 1.5: 每个像素占用的字节,(对于4个像素,yuv444格式中,需要4Y+4U+4V=12bytes;而yuv420需要占用4Y+1U+1V=6bytes,平局每个像素1.5bytes) - 30: 视频时长

测试视频生成

  1. 生成彩条视频
1
ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p testsrc.mp4