导航:首页 > 文件处理 > 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压缩相关的资料

热点内容
编程打左右双引号 浏览:715
程序员面试为什么想做测试 浏览:335
多多农场如何开服务器 浏览:636
无法连接r星服务器怎么回事 浏览:425
e盘里的文件夹exe 浏览:811
云服务器能玩大话吗 浏览:645
怎么查看手机app总数 浏览:10
华为交换机的基本配置命令 浏览:405
石英表怎么连接app 浏览:276
51单片机与lcd1602 浏览:364
安卓手机拍照为什么自动旋转 浏览:114
如何获取根名称服务器IP 浏览:104
arm汇编程序伪指令的作用 浏览:151
男生手机app一般从哪里下载 浏览:946
java字符串追加字符串 浏览:186
我的世界如何破坏东西可以激活命令方块 浏览:73
程序员那么可爱大结局几时播 浏览:87
光遇一个号怎么弄小号安卓 浏览:826
击掌解压教学视频 浏览:323
数控车床加工编程技术视频 浏览:99