qt如何将amr转mp3_如何解决播放FLV视频卡住不动?试试FFmpeg将FLV转MP4

最近在下载直播视频时,大器发现下载的视频是FLV格式,在快进或者拖动播放进度条时,视频图像会卡住不动很长时间,极大影响观看体验。解决FLV播放问题的方法是将FLV转换为大部分设备都支持的MP4格式。虽然本文是以FLV转MP4为例,但同样适用于其他类型视频文件的转换,包括WebM、AVI和WMV。

编码简介

FLV格式发布于2002年,一经推出便迅速成为了网页默认的视频格式,是第一个在互联网上被广泛使用的视频格式。

随着移动设备成为互联网的主力军,HTML5取代了大多数网页中的Flash,MP4取代了FLV容器,MP4成为视频的事实标准。由于FLV文件只能在基于Flash的视频播放器中播放,Flash被淘汰后,FLV文件要想在移动设备或者不带Flash的浏览器中播放的话,需要将FLV转为MP4格式。

要对视频进行格式转换有非常多的工具,比较常用的是格式工厂(FormatFactory),但绝大部分工具都基于FFmpeg或者使用了FFmpeg的编解码库。直接使用FFmpeg可以更灵活地实现我们的需求。

在使用FFmpeg工具前需要先下载并在电脑中配置好,具体操作方法可以查看大器之前的文章《FFmpeg安装配置指南》。

目前常见的MP4文件的视频和音频编码方式分别为H.264和AAC。H.264与MPEG-2和MPEG-4编码相比,在同等图像质量条件下压缩率更高,还能提供连续、流畅的高质量图像(相当于DVD质量)。AAC编码能够保证完美的音质,极高的压缩比。AAC与MP3相比,增加了对立体声的完美再现、降噪等特性,再现CD的音质。

4456f8b74532683a47b8401629bb1469.png

FLV容器可以存储多种视频和音频编码,视频编码主要有Sorenson Spark、VP6、H.264,音频编码主要有Nellymoser Asao、Speex、MP3。可以通过以下命令查看FLV文件的视频和音频编码:

ffmpeg -i video.flv

然后可以在输出信息中找到以下信息:

Input #0, flv, from 'video.flv':  Duration: 02:02:07.46, start: 3758.107000, bitrate: 1007 kb/s    Stream #0:0: Audio: aac (HE-AAC), 44100 Hz, stereo, fltp    Stream #0:1: Video: h264 (High), yuv420p(tv, smpte170m, progressive), 720x1280, 2000 kb/s, 15 fps, 15 tbr, 1k tbn

编码转换

实际上编码转换可以只用下面的第四种命令,但是对相同编码的流重新编码会损失数据,并且花费更长的时间。根据FLV源文件的编码格式,FLV转MP4可分为以下四种情况:

1. H.264视频编码和AAC音频编码

如果FLV文件的编码分别为H.264和AAC,直接将视频和音频流复制到MP4即可。此命令仅仅改变数据流的容器而无需重新编码,视频和音频质量相同,文件大小基本保持不变,并且处理速度最快。

ffmpeg -i video.flv -codec copy video.mp4

2. H.264视频编码和非AAC音频编码

直接复制视频流,音频流会自动按MP4的标准重新编码。此命令会对音频质量造成损失,文件大小可能有一些差异,处理速度一般。

ffmpeg -i video.flv -vcodec copy video.mp4

对于音频流可以使用-ar指定采样率(kHz),-ac指定声道数量(1:单声道,2:双声道)

ffmpeg -i video.flv -ar 44100 -ac 2 -vcodec copy video.mp4

3. 非H.264视频编码和AAC音频编码

直接复制音频流,视频流会自动按MP4的标准重新编码。此命令会对视频质量造成损失,文件大小可能有较大差异,处理速度较慢。实际上这种规格的文件是非常罕见的。

ffmpeg -i video.flv -acodec copy video.mp4

4. 非H.264视频编码和非AAC音频编码

如果FLV文件的视频编码不是H.264并且音频编码不是AAC,那么视频和音频需要按MP4的标准重新编码。此命令会对视频和音频质量造成损失,文件大小可能有很大差异,处理速度最慢。

ffmpeg -i video.flv video.mp4

了解FFmpeg的输出信息

FFmpeg在运行过程中会输出以下信息:

  • FFmpeg的版本号和详细的构建命令
  • 输入流的信息 (类型,码率,帧率,采样率,声道数)
  • 输出流的信息
  • 输入输出流的对应关系 (复制和转码的情况)
  • 转换的统计数据 (时间,码率等)
5febb41e406ce2eb6e471bbe1447b980.png

我是大器,正在建立自己的知识库,并将这些经验分享给你,请关注我,一起交流学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值