最好 FFmpeg 給視頻 添加水印 添加標註

用FFMPEG 給視頻添加水印  

用FFmpeg 給視頻添加水印就不多說了,網上有很多,但是添加完水印之後,視頻的質量會發生變化,要麼變小了,要麼變得是原來碼率的2倍。

這個問題困擾了我好久,最後發現在用這個命令的時候記得將其碼率也一同設置出來。

 

D:/ffmpeg.exe -y -i D:/A.mp4 -vf "movie=aaa.png [wm];[in][wm] overlay=5:5:enable='between(t,1,3)'"  -b:v 1024k D:/b.mp4

 

注:-b 指的是設置碼率,

        -b:v 指得是設置視頻的碼率

        -b:a 指的是設置音頻的碼率

 

下面是我的一段程序:
		        MediaInfo MI;
		MI.Open(copying_path.toStdWString()); // 打開視頻
 		std::wstring strOverallbitRate = MI.Get(Stream_General,0,QString("OverallBitRate").toStdWString()); // 獲取overallBitRate
		std::string ssOBR = RD::ws2s(strOverallbitRate);
		QString strOBR = QString(ssOBR.c_str());
		int nOverallBitRate =strOBR.toInt(); // 得到int的好計算
		MI.Close();
		QString qsORB = QString("%1k").arg((int)(nOverallBitRate/1000)); // 這裏弄出來是1045k 
		QStringList qlTag;
		QString temp_name = iter->nName;
		int start_time = iter->nStartTime;
		int end_time = iter->nEndTime;
		QString aa = QString("movie=%1 [wm];[in][wm] overlay=5:5:enable='between(t,%2,%3)'").arg(temp_name).arg(start_time).arg(end_time);
		//調用命令
		qlTag<<"-y"<<"-i"<<copying_path<<"-vf"<<aa<<"-b:v"<<qsORB<<filename; // 注意這裏要分開這裏- 尤其注意這裏QStringList的用法
		q_Process.start(m_FFmpegPath,qlTag);	
		q_Process.waitForFinished(60000);  // 記住這些東西,這裏最好設置一個時間,要不會有問題等不到。
用mediainfo 獲取到視頻的碼率,添加水印時用上這個碼率,以保證新的視頻的質量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章