ffmpeg使用心得

假日家里没网络,于是把往日的U盘翻出来,看看里面的旧电影,结果发现MacOS播放不了rmvb和kvm格式的电影。实在无聊,原本想去外面蹭网装一个新播放器,忽然想起我的mac 装了ffmpeg,于是试着进行转码。

第一版

刚开始不知道怎么做,先百度,按照百度的命令来 ffmpeg -i xx.rmvb xxx,mp4

果然开始转换了,内心狂喜。结果细细一看,转码速度约0.5倍速,如果是2小时的电影,就需要4个小时。而且我的破mac风扇已经开始狂转了,心理感觉好疼,忍着转完一部,想着要不要用硬件加速试试。

第二版

硬件加速,看man 文件,又百度的,终于跑起来的,速度果然好快,6倍速,开心的不得了。转完打开电影一看,顿时心里哇凉。模糊的已经不想再多看一眼。命令

ffmpeg -f avfoundation -c:v h264_vda -i “demo.rmvb” -c:v h264_videotoolbox -c:a aac_at demo_out.mp4

第三版

不知道脑子怎么抽了一下,发现kvm格式的视频,video流都是h264 ,audio流都是aac ,而MP4

格式的也是这样,萌生了流对拷的念头。一通百度,果然可以。速度超过20倍速度,好开心。

想把这种思路用rmvb上面却发现流格式不一样。悲剧,继续看着0.5倍速的转码吧。

命令 ffmpeg  -c copy  -i “demo.kvm”    demo_out.mp4

第四版

存货很快就没了,电影的瘾却勾起来了,怎么办?去下载。刚开始想找网站下载,发现大部分需要装p2p软件客户端,再三思考,觉得还是下载hls网站电影吧。随便百度了个网站,手工找到m3u8文件路径,准备下载,开始想写个脚本分析m3u8文件然后下载ts文件,再用ffmpeg合并。写了半天各种问题,跑起来也是0.6倍速。于是决定翻翻ffmpeg文档。发现可以直接下载m3u8并保存为MP4。 命令 ffmpeg   -i “http://xxx.xxx/demo.m3u8”    demo_out.mp4

第五版

忍着cpu发烫,下了半小时,忽然想起可以用流copy ,于是新的命令版本

 ffmpeg   -i “http://xxx.xxx/demo.m3u8”    -c copy  demo_out.mp4

悲剧了,报错了。继续用苦逼的思路干。

改为ffmpeg   -i “http://xxx.xxx/demo.m3u8”    -c:v copy  -c:a aac  demo_out.mp4  速度提升到0.8倍速,CPU也没有以前那么烫手了。

第六版

此处要强调一下,学好英语的必要性了。开始遇到上面的出错内容,根本看都没看,满屏英语看着头疼。在等待下载的时间,实在无聊的不行的时候,翻过来看了看。貌似加个参数可以解决。还等什么,看电影哪有折腾有成就感。

ffmpeg   -i “http://xxx.xxx/demo.m3u8”    -c copy  -bsf:a aac_adtstoasc   demo_out.mp4 

直接拉到10倍速下载(网络给力,网站也给力),我整个人已经没有看电影的想法了,只想把所有电影都下载一遍。

题外话

又下载了几部电影,开始感觉毫无乐趣了,怎么办?发现自己下载的老无所依,转码后居然中文声音,还没有字幕。看的人一愣一愣的。心想不该啊,毕竟rmvb文件名上面写的是中英文字幕多语音版。

用ffprobe xxx.rmvb 查看,发现内容居然有6个流,神奇,仔细查看 显示1个video流 ,两个audo流 还有三个Subtitle流,应该是字幕流,怎么能忍,不能忍。又是一番百度,一番文档。

ffmpeg使用心得_第1张图片

于是 ffmpeg   -i “xxx.rmvb”    -c copy  demo_out.mp4 报错了,继续尝试 ffmpeg   -i “xxx.rmvb”    -c:v copy -c:a copy map 0:v  -map 0:a:1  demo_out.mp4  成功转码,打开一看,英文声音,但是没有字幕。

再次改进尝试  ffmpeg   -i “xxx.rmvb”    -c:v copy -c:a copy  -c:s copy  -map 0:s:5  -map 0:a:1   -map 0:v  demo_out.mp4 还是报错,估计是当时熬夜熬糊涂了,根本没想到去仔细看错误内容。只能先整了双语无字幕版。是可忍孰不可忍,过了两天,又再次尝试,仔细阅读了一下错误内容。貌似是字幕的codec不太对,于是尝试进行各种改。最终成功解决,原来是MP4不支持ssa格式的字幕。

ffmpeg   -i “xxx.rmvb”    -c:v copy -c:a copy -c:s  mov_text  demo_out.mp4   

完美,又快又全,还多字幕多语言。

看看哪天有兴趣,整一下加水印、去水印、录屏 rtsp流之类的玩一下。

你可能感兴趣的:(技術,音视频,ffmpeg)