转换参数
-i sourceVideo.wmv -vcodec libx264 -preset ultrafast -profile:v baseline -acodec aac -strict experimental -s 640*480 -b 568k -ab 128k destinationVideo.mp4
-vcodec libx264 采用 H.264 的编码方式
-preset ultrafast 快速的编码方式
-profile:v baseline 让视频提供最好的兼容方式,但会关闭很多高级特性
-acodec aac 采用 AAC 音频编码
-strict experimental
-s 640*480 图片的大小
-b 568k 视频码率
-ab 128k 音频码率
问题描述
1、转换多视频流视频,其视频流信息丢失,输出视频只有音频信息。
出错视频异常参数 |
正常视频的正常参数 |
出错视频描述 |
导致的结果 |
3 video streams : MPEG-4 ( microsoft ), 3Kbps , MPEG-4 Visual ( Microsoft ) |
1 audio stream:WMA 568Kbps,WMV1;
|
只有音频 |
视频信息丢失,不能播放视频 |
2、总比特率模式为变量的视频,转换时间长,输出视频大,频率高(有时会导致转换程序中断,视频无法继续转换)。
出错视频异常参数 |
正常视频的正常参数 |
出错视频描述 |
导致的结果 |
Overrall bit rate mode:Variable
|
Overrall bit rate mode:Constant |
频率高,文件大(是原来的 2-3 倍) |
转换时间长,有的甚至出现“无法转换”。 |
问题对策
1、使用参数“ -map 0 ”,使得所有的流都参与到转换中去。
解释:视频中一般包含视频流和音频流,并且可以有多个视频流,多个音频流。 FFmpeg 转换视频,默认情况下,其第一个视频流、第一个音频率参与转换,其他的忽略。上述的出错视频其第一个视频流的视频比特率只有 3kb ,其太小,转换时将其忽略。(个人解释,不具有权威性)
2、使用参数“ -r 25 ”,强制写入帧率,使得输出视频的帧率不过高(蹦到 1000 )。
解释:可能视频的总比特率为变量,所以原视频的信息(比例帧率)未能写入到输出视频中去。