要真正给FFmpeg编写一个完全的前端界面,工作量无疑是巨大的,因为FFmpeg涉及到对多种格式转化,以及多个选项参数的选择,这些额外的组件以及不断改变的选项的参数,使得编写一个FFmpeg的前端界面变得尤为复杂,所以这里我们只是涉及到了一些基本音视频格式的转化,以及几个比较常见的选项参数的设置,在FFmpeg中对于转化成运行在不同设备上每种不同格式的一些选项参数都是固定的,只有少数的几种选项是可供我们来改变的,所以我们将要转化的目标设备以及一些可供改变的参数开放出来供用户改变,并且同样也会将FFmpeg的输出结果显示出来。
具体在Qt中利用Designer来如何设计页面,这里就不一一细说,只介绍几个关键的槽。
在Qt界面上我们是采用QProcess来运行外部的FFmpeg程序,我们只需要构建FFmpeg命令的参数,然后调用QProcess的start函数就可以运行FFmpeg。
在这里我们以利用FFmpeg转换成适合在PSP设备上运行的视频文件为例,我们已经找到用于转换运行在PSP上的视频的最佳FFMEPG命令是: ffmpeg -i space.mpg -vcodec libxvid -s 320x240 -r 29.97 -b 1500 -acodec libfaac
-ac 2 -ar 24000 -ab 65535 -f psp M4V80113.mp4 -y
我们会根据所选择的目标设备来给参数选择的组合框中设置多个可供选择的选项:
void MainWindow::setPSP()
{
ui->comboResolution->clear();
ui->comboFramerate->clear();
ui->comboBitrate->clear();
ui->comboSamplerate->clear();
ui->comboAbitrate->clear();
ui->comboResolution->addItem("240x320");
ui->comboResolution->addItem("160x120");
ui->comboFramerate->addItem("29.97");