導航:首頁 > 文件處理 > ffmpeg壓縮

ffmpeg壓縮

發布時間:2022-01-11 21:11:06

⑴ 我想用ffmpeg命令行轉換一個視頻文件,視、音頻編碼格式不變,只是將畫面旋轉90度,請問命令行該如何寫

在你的轉碼命令裡面添加上-vf rotate=PI/2或者-vf rotate=3*PI/2,例如
ffmpeg -i E:\ffmpeg\test.mp4 -y -vf rotate=PI/2 E:\ffmpeg\dest1.mp4

⑵ 求ffmpeg音頻壓縮代碼(wav壓縮成wma)

這個簡單。大致的思路是
1.打開wav文件
2.打開要輸出的wma文件
3.不停的讀取數據幀
4.讀取以後解碼並寫入wma
5.關閉wav文件
6.關閉wma文件

重新寫例子太麻煩貼點代碼吧

#include "Debug.h"
#include "FFMpegAVFileReader.h"
#include "FFMpegAVFileReaderFactory.h"
#include <sstream>
#include "yk_convert.h"

static char h264_head[4] = {(char)0x00,(char)0x00,(char)0x00,(char)0x01};

namespace YK
{
FFMpegAVFileReader::FFMpegAVFileReader()
{
ffmpeg_avcodec_init();
ffmpeg_av_register_all();

av_log_set_callback(ffmpeg_log_callback);
m_format_context = 0;
m_input_format = 0;
m_format_parameters = 0;
m_packet = (AVPacket*)av_mallocz(sizeof(AVPacket));
}

FFMpegAVFileReader::~FFMpegAVFileReader()
{
Close();
av_free(m_packet);
}

avfile_reader_param_t* FFMpegAVFileReader::GetParam()
{
//YK::AutoLock l(m_lock);
return &m_param;
}

void FFMpegAVFileReader::Seek(int pts)
{
YK::AutoLock l(m_lock);

int ret = av_seek_frame(m_format_context,-1,(YK::int64_t)pts * (YK::int64_t)1000,AVSEEK_FLAG_BACKWARD | AVSEEK_FLAG_ANY);
//if(ret >= 0)
//{
// for(int i = 0; i < m_format_context->nb_streams; i++)
// {
// avcodec_flush_buffers( m_format_context->streams[i]->codec );
// }
//}

//std::stringstream ss;
//ss << "pts = " << pts
// << " ret = " << ret << std::endl;
//OutputDebugString(ss.str().data());
}

void FFMpegAVFileReader::GetDuration(double& start,double& end)
{
//YK::AutoLock l(m_lock);
start = (double)(m_start_time / 1000000);
end = start + (double)(m_ration / 1000000);
}

service_error_t FFMpegAVFileReader::Open(int time_out)
{
YK::AutoLock l(m_lock);
service_error_t service_error;

// 打開文件
if (av_open_input_file(&m_format_context,TToANSI(m_param.input_file_path).data(),m_input_format,0,m_format_parameters) < 0)
{
service_error.init(service_error_type_failed,"av_open_input_file failed");
return service_error;
}

// 查詢流信息
if(av_find_stream_info(m_format_context) < 0)
{
service_error.init(service_error_type_failed,"av_find_stream_info failed");
return service_error;
}

m_start_time = m_format_context->start_time;
m_ration = m_format_context->ration;

#ifdef _DEBUG
pFile = fopen("D:/1.out","w+b");
#endif

// 保存流信息
av_stream_info_t av_stream_info;
for(unsigned int i = 0; i < m_format_context->nb_streams; i++)
{
AVStream *st = m_format_context->streams[i];
AVCodecContext *enc = st->codec;

if(enc->codec_type == AVMEDIA_TYPE_AUDIO)
{
// 音頻
av_stream_info.av_stream_info_type = av_stream_info_type_audio;
av_stream_info.codec_id = codec_id_none;
//channel_layout = enc->channel_layout;
av_stream_info.audio_channels = enc->channels;
av_stream_info.audio_samplepersec = enc->sample_rate;
av_stream_info.audio_bitpersample = yk_sample_format(enc->sample_fmt);
//audio_sample_fmt = enc->sample_fmt;
//input_codecs[nb_icodecs++] = avcodec_find_decoder_by_name(audio_codec_name);
av_stream_info.codec_id = yk_code_id(enc->codec_id);
av_stream_info.extradata_size = enc->extradata_size;
if(av_stream_info.extradata_size)
memcpy(av_stream_info.extradata,enc->extradata,enc->extradata_size);

if(av_stream_info.codec_id == codec_id_mp3)
{
av_stream_info.extradata_size = sizeof(mpeg1_waveformat_extradata);
mpeg1_waveformat_extradata* pMpeg1WaveFormat = (mpeg1_waveformat_extradata*)av_stream_info.extradata;
pMpeg1WaveFormat->dwHeadBitrate = enc->bit_rate;
pMpeg1WaveFormat->dwPTSHigh = 0;
pMpeg1WaveFormat->dwPTSLow = 0;
pMpeg1WaveFormat->fwHeadFlags = 25;
pMpeg1WaveFormat->fwHeadLayer = ACM_MPEG_LAYER3;
pMpeg1WaveFormat->fwHeadMode = ACM_MPEG_STEREO;
pMpeg1WaveFormat->fwHeadModeExt = 1;
pMpeg1WaveFormat->wHeadEmphasis = 1;
}

AddStreamInfo(av_stream_info);

m_stream_audio_index = i;
}
else if(enc->codec_type == AVMEDIA_TYPE_VIDEO)
{
// 視頻
av_stream_info.av_stream_info_type = av_stream_info_type_video;
av_stream_info.codec_id = codec_id_none;
av_stream_info.video_width = enc->width;
av_stream_info.video_height = enc->height;
av_stream_info.video_profile = enc->profile;
av_stream_info.video_level = enc->level;

if(av_stream_info.video_profile < 0)
{
av_stream_info.video_profile = 77;
}

if(av_stream_info.video_level < 0)
{
av_stream_info.video_level = 30;
}
av_stream_info.extradata_size =

⑶ 如何在Windows上安裝FFmpeg程序

下載FFmpeg。訪問下載頁面時,你將看到很多不同下載選項。你可以根據自己的操作系統選擇下載最新的32位或64位靜態程序版本。
下載並安裝7-zip。7-zip是一個免費的壓縮管理程序,它可以讓你打開FFmpeg文件。
解壓FFmpeg文件夾。當你使用7-zip來解壓文件時,它會在原來下載文件位置生成一個新的文件夾。該文件夾名字類似於「ffmpeg-20130731-git-69fe25c-win32-static」。打開這個文件夾,以供稍後使用。
打開C:盤。點擊開始菜單,然後點擊計算機。選擇安裝Windows系統的磁碟(一般是C:)。在C:盤的根目錄下(該目錄下有名為Windows和Program Files文件夾),右擊並在彈出菜單中選擇新建文件夾。將新文件夾命名為「ffmpeg」。
打開新建的「ffmpeg」文件夾。將解壓生成的文件夾中內容全部拷貝到「ffmpeg」文件夾中。

⑷ MP4視頻太大如何壓縮

你好,很多時候我們在刷視頻的時候看到好看的視頻都想分享給自己的好友看,但是在視頻過大的情況下,我們就需要將視頻進行壓縮,那麼,如何將其進行壓縮呢?壓縮的步驟是什麼?喜脈案將步驟和大家講解下:

打開迅捷壓縮工具,在跳轉的頁面有五個功能選項,點擊選擇視頻壓縮;

以上就是我將視頻進行壓縮簡單步驟講解,希望可以幫助到大家!

⑸ ffmpeg 如何獲取視頻尺寸想把視頻尺寸縮小為原尺寸的一半

重新編碼啊。-vcodec libx264 -r 15 -s 600x450 -aspect 4:3 -vb 320k -acodec libmp3lame -ar 44100 -ab 32k -ac 2
你不想改變就是 。-vcodec -acodec

⑹ ffmpeg 怎麼把h264文件轉成MP4

H.264是編碼規范不是視頻格式,有些Mp4格式的視頻也用這種編碼。一般Mp4使用DIVX或XVID編碼,主要看播放設備是哪種。ffmpeg需要在命令提示符下運行(按Win鍵+R調出運行,輸入CMD即可),而且要轉換的視頻最好與FFmpeg放在同一個目錄下,以下是以轉換PSP能播放的視頻為例:
ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"
解釋:以上命令可以在Dos命令行中輸入,也可以創建到批處理文件中運行。不過,前提是:要在ffmpeg所在的目錄中執行
參數:
-y(覆蓋輸出文件,即如果1.***文件已經存在的話,不經提示就覆蓋掉了)
-i "1.avi"(輸入文件是和ffmpeg在同一目錄下的1.avi文件,可以自己加路徑,改名字)
-title "Test"(在PSP中顯示的影片的標題)
-vcodec xvid(使用XVID編碼壓縮視頻,不能改的)
-s 368x208(輸出的解析度為368x208,注意片源一定要是16:9的不然會變形)
-r 29.97(幀數,一般就用這個)
-b 1500(視頻數據流量,用-b xxxx的指令則使用固定碼率,數字隨便改,1500以上沒效果;還可以用動態碼率如:-qscale 4和-qscale 6,4的質量比6高)
-acodec aac(音頻編碼用AAC)
-ac 2(聲道數1或2)
-ar 24000(聲音的采樣頻率,好像PSP只能支持24000Hz)
-ab 128(音頻數據流量,一般選擇32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(輸出psp專用格式)
-muxvb 768(好像是給PSP機器識別的碼率,一般選擇384、512和768,1500以上,PSP會提示文件損壞了)
"1.***"(輸出文件名,也可以加路徑改文件名)

⑺ ffmpeg壓縮mp3後為什麼音頻播放時間減少了

ffmpeg.exe -i "源音頻文件.ape" -b:a 192k -acodec mp3 -ar 44100 -ac 2 "轉換後的音頻文件.mp3"採用的標准192K,44100采樣率

⑻ 怎麼壓縮視頻且不破壞解析度

可以使用愛剪輯軟體來將視頻文件壓縮且不破壞解析度,步驟如下:

需要工具:電腦、愛剪輯軟體

一、首先找到需要壓縮的視頻,並將其拖到桌面上方便查找,此時視頻大小為66.6M。

⑼ 視頻先轉碼再壓縮 還是先壓縮再轉碼好 還是轉碼壓縮一起好啊

個人推薦一起比較好

⑽ ffmpeg x264 壓縮 為什麼出現馬賽克

碼率太低

閱讀全文

與ffmpeg壓縮相關的資料

熱點內容
白熊app稿費怎麼樣 瀏覽:463
新建的命令為 瀏覽:425
數組兩種查找演算法集合 瀏覽:757
dw怎麼將源碼拆成幾個文件 瀏覽:230
驗演算法復核法 瀏覽:996
電腦管機就刪除文件夾 瀏覽:480
建築的書pdf 瀏覽:355
歷史考研11本pdf 瀏覽:381
pdf膜官網 瀏覽:604
游戲資源文件存在哪個文件夾 瀏覽:8
mc怎麼用命令方塊無限生成僵屍 瀏覽:795
英文蝦皮app怎麼登錄 瀏覽:434
同花順app怎麼確定盤中個股買入點 瀏覽:869
程序員摸底考試考什麼 瀏覽:527
如果編譯器是中文 瀏覽:517
程序員升職怎麼談 瀏覽:111
android機頂盒ui 瀏覽:362
tb編譯器 瀏覽:740
怎麼壓縮圖片和視頻在一起 瀏覽:565
gcc編譯win 瀏覽:231