導航:首頁 > 文件處理 > 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壓縮相關的資料

熱點內容
在呀被蚊子咬完後最快的解壓法 瀏覽:983
鹿泉好的源碼出售 瀏覽:424
多ip伺服器有什麼優點 瀏覽:188
2k伺服器無法使用怎麼辦 瀏覽:909
安卓手機微信內容如何刪除 瀏覽:404
星耀巴西實況足球8解壓碼 瀏覽:165
根伺服器怎麼連接的 瀏覽:243
php是否圖片url 瀏覽:557
vps綁定域名linux 瀏覽:338
android開發一年經驗 瀏覽:523
什麼叫做解壓到根目錄下 瀏覽:503
prom文件夾 瀏覽:728
不規則土方的演算法 瀏覽:211
tor加密貨幣網站 瀏覽:451
linux轉ansi 瀏覽:738
網站源碼怎麼查 瀏覽:689
高cpu雲伺服器 瀏覽:367
androidwebrtcaecm 瀏覽:983
阿里雲部署java 瀏覽:638
雲是不是就是個大的伺服器 瀏覽:583