int main参数设置
int main(int argc, char **argv)
{
if (argc <= 2) {
fprintf(stderr, "Usage: %s <input file> <output file>\n", argv[0]);
exit(0);
}
filename = argv[1];
outfilename = argv[2];
}
void main(int argc,char *argv[]),直接讲就是argc表示你使用这个程序时输入参数的个数,argv[]表示各个参数;默认argc为1,argv[0]为程序名称。
比如: 在CMD环境下Ping命令,ping https://www.csdn.net/,这时argc=2 argv[0]="ping" argv[1]=https://www.csdn.net/
在CMD下使用自己的程序时输入:程序名.exe audio.mp3
FFmpeg音频解码报错
swr_convert(swrCtx, &out_buffer, 2 * 44100, frame->data, frame->nb_samples);
报错:swr_convert 无法将参数 4 从“uint8_t *[8]”转换为“const uint8_t **”。
解决方法:可以直接强制转换
swr_convert(swrCtx, &out_buffer, 2 * 44100,(const uint8_t **)frame->data, frame->nb_samples);
再次编译运行即可通过。
错误 C4996 ‘AVStream::codec‘: 被声明为已否决
解决方法: 将VS的SDL检查关闭
让C++控制台程序停下来,实现暂停功能
#include <stdlib.h>
int main
{
system( "PAUSE");
}
在一个项目中含有main函数的A.cpp,引用另一个B.cpp的函数Sap()
直接在含有main函数的AudioDecode.cpp文件代码头部添加“extern int simplest_aac_parser(char *url)”,在main函数中引用函数simplest_aac_parser(“ ”)运行即可
#include "stdafx.h"
extern int simplest_aac_parser(char *url);
int main()
{
simplest_aac_parser("Demo.aac");
return 0;
}
c++中switch语句里的default
swith(变量)
{
case xxx:
……
break;
case xxx:
case xxx:
……
break;
default:
……
}
default就是当变量的取值不在上面任何一个case的情况下,语句要做处理,其实也是一种case,只不过就是指“除了指定的几个case以外的其他情况”。default就是switch语句中没有列出case的所有其他情况。这是一种安全的编程方式,建议写switch语句一定加default,这样可以防止不进入分支的错误。
FFmpeg音频解码报错2
进行将MP4音频,利用ffmpeg代码分解成aac和无声mp4格式视频时: 在avformat_open_input("(&fmt_ctx, 'input.mp4', NULL, NULL))打开mp4问件时报错: input.mp4, -1094995529(Invalid data found when processing input)。
原因:代码中没有添加=====FFmpeg相关初始化==== (即av_register_all()); 添加av_register_all()之后,在进行编译运行即可通过。