mp4转mpg
需求:将iPhone录制的.mp4格式的视频转成.mpg的且分辨率是1920x1080
用格式工厂发现格式工厂中确实提供了转.mpg功能,但是分辨率设置成1920x1080,但是转换后的视频就自动变成720x480,然后发现不管视频多大,最后都是720x480,应该是格式工厂的bug,放弃。
用狸窝转换软件,发现其也确实有转.mpg的功能且设置分辨率也好用,但是它不识别iPhone录制的.mp4格式的视频,转完后是黑屏,放弃。
灵机一动:
用格式工厂将iPhone录制的.mp4转成其他编码格式的mp4格式
转完后再用狸窝转.mpg,发现可行,狸窝识别了转完后的MP4格式,转,转完后视频确实是1920x1080,播放无卡顿,但是不知道为什么视频文件详情里显示视频只有六秒,但是视频正常能播放并且是两分钟的视频
虽然能播放肉眼可见的都是没有任何问题,就是这个详情里的时长不对,但是为了保险起见,再次尝试其他视频转换软件
去b站找找灵感,发现一款叫moo0的软件下载使用确实好用,转换速度极快,且也有我想要的mpg格式和1920x1080,转完之后,文件详情里时长变得正常了,终于以为大功告成,结果在检查视频是否转换完整且没有卡顿的时候发现视频有卡顿现象,以为是转换的时候电脑性能波动影响,结果转换无数次,都是有卡顿。。。。
随后。。。
我就又找到一款开源项目ffmpeg,没有界面话操作,需要学习其语法命令来转换视频,发挥了菜鸟程序员的长处能看懂点命令,学起来能快点
快速学习了下会使用几个命令
用ffmpeg用这个命令:ffmpeg -i IMG_6625.MP4 -vcodec mpeg2video -s 1920x1080 -b 8600k -r 25 naiwang2.mpg,将iPhone原相机录的.mp4视频转成.mpg的视频成功了,欣喜若狂。。。。高兴的太早了,在检查视频的时候发现也是有卡顿,多次尝试不用的参数,最后视频里都有点点卡顿现象。
再次灵机一动:
我发现ffmpeg有个命令
我不是有狸窝转完符合期望的不卡视频吗,但是就是详情里的时长不对,那我用这个命令再给他放到一个mpg容器里不就行了
于是使用命令:ffmpeg -i IMG_6625.mpg -c copy naiwang.mpg
解释:IMG_6625.mpg为使用狸窝转换后的mpg视频
终于成功了!!!时长对,分辨率对,播放没有卡顿
一点小问题,我发现iPhone录的这个视频才一百多兆,我这转弯后怎么三百多兆,也没清晰到哪去,文件这么大虽然在我电脑上放没问题,在别的设备会不会卡顿之类的;
回头找问题:
发现原视频,就是iPhone录得MP4格式视频经过格式工厂转化成别的编码格式的MP4大小仅仅变大了一点点,然后再经由狸窝转的时候变成了三百多M,看下狸窝转视频的配置
视频质量选的中等质量的原因,使用中等质量转完的视频,比特率高达好几万,看了下原视频文件大小一百多m的比特率才9000多,其他的帧率都差不多25左右,问题应该就是这个视频质量,将视频质量选成自定义,然后把比特率手动改成9000,
转换后的mpg就也是一百多兆,这时候再用上面的ffmpeg拷贝命令,
得到的就是时长对,分辨率对,播放没有卡顿,且文件大小不大且清晰度够用的文件!!!
散会~
附上ffmpeg使用方法:
下载开源项目ffmpeg,上网搜或者找我要网盘,放到百度网盘里了,
下载后解压
将解压后bin路径放到电脑环境变量path里
环境变量:
设置完环境变量后双击bin中的ffmpeg.exe文件,没有下一步啥的,就一闪而过一个黑影就装完了,然后检查是否安装成功,使用ffmpeg -version 命令来查看
ffmpeg主要参数:
-c: 指定编码器
-c copy: 直接复制,不经过重新编码(这样比较快) eg: ffmpeg -i input.mp4 -c copy output.webm
将视频从一种容器转到另一个容器
-c:v: 指定视频编码器 eg: ffmpeg -i [input.file] -c:v libx265 output.mp4 转成 H.265
编码
-c:a: 指定音频编码器
-i: 指定输入文件 eg: ffmpeg -i input.mp4 查看文件信息
-an: 去除音频流
-vn: 去除视频流 eg: $ ffmpeg -i input.mp4 -vn -c:a copy output.aac 从视频中提取音频;-
vn去掉视频,-c:a copy表示不改变音频编码,直接拷贝。
-preset: 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast,
veryfast, faster, fast, medium, slow, slower, veryslow。
-y: 不经过确认,输出时直接覆盖同名文件。
-vf scale=480*360 改变分辨率 eg:ffmpeg -i input.mp4 -vf scale=320*240 output.mp4
-s 设置视频分辨率 eg:ffmpeg -i input,mp4 -s 320x240 output.mp4
-vframes 1 指定只截取一帧
-q:v 2表示输出的图片质量,一般为1到5(1代表质量最高)
-ss 开始时间
-t 持续时间
-to 结束时间
-loop 1 表示图片无限循环
-shortest 音频文件结束,输出视频就结束
-r fps 设置帧率 eg: ffmpeg -i input.mp4 -r 24 output.mp4 设置帧率为24
-b 设置码率 eg: ffmpeg -i input.avi -b 1.5M output.mp4
-b:a 音频 -b:v 视频
-fs (file size首字母缩写)控制输出文件大小 eg: ffmpeg -i input.avi -fs 1024K output.mp4
-ar 指定音频采样率 比如48000
-channels 指定音频通道数 比如双通道为2
-profile:a 指定音频编码格式 比如AAC_LC
-ss 开始时间
视频参数:
-b 设定视频流量(码率),默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
-g gop_size 设置图像组大小 这里设置GOP大小,也表示两个I帧之间的间隔
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
这段参数说明从这个博主粘来的:
————————————————
版权声明:本文为CSDN博主「戴国进」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:ffmpeg基础使用_ffmpeg怎么用_戴国进的博客-CSDN博客
举例:
将文件IMG_6625.MP4转成.mpg格式:ffmpeg -i IMG_6625.MP4 -vcodec mpeg2video -s 1920x1080 -b 8600k -r 25 naiwang2.mpg
解释:
-s 1920x1080:分辨率
-b 8600k:上文说叫码率,我看文件详情里是叫比特率
在视频转换软件中也叫比特率:
注意,经过尝试,两分钟的视频比特率设置为9000k左右,大小在130M左右,建议设置成9000k,清晰度跟设置成好几万k差不多
-r 25:帧速率,就是一秒多少帧,在文件详情里:
在视频转换软件里: