IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 调用 ffmpeg.exe 执行音视频混流合并; -> 正文阅读

[C++知识库]C++ 调用 ffmpeg.exe 执行音视频混流合并;

ffmpeg.exe文件可以去官网下载:FFmpeg

官网似乎不提供32位dll文件的下载了,但是可以下载exe文件来直接调用;


#include <iostream>
#include <io.h>
#include <direct.h>
#include <cstdlib>
using namespace std;
/// <summary>
/// C++ 调用 ffmpeg.exe 执行音视频混流合并
/// </summary>
/// 输入的命令中路径参数不需要加双引号,此方法会自动添加双引号以排除system()路径空格的问题
/// <param name="_pathVedio">视频文件路径</param>
/// <param name="_pathAudio">音频文件路径</param>
/// <param name="_pathOutput">输出目录</param>
/// <param name="_pathFfmpegExe">ffmpeg.exe文件路径</param>
extern "C" _declspec(dllexport)
bool combineVedioAudio(string _pathVedio, string _pathAudio, string _nameOut, string _pathOutput, string _pathFfmpegExe)
{
	string outPutFilePath = _pathOutput + "\\" + _nameOut;// _最终的输出文件的完整路径
	//参数检错
	{
		if (0 != _access(_pathAudio.c_str(), 0))//音频文件不存在
			return false;
		if (0 != _access(_pathVedio.c_str(), 0))//视频文件不存在
			return false;
		if (0 != _access(_pathFfmpegExe.c_str(), 0))//ffmpeg.exe文件不存在
			return false;
		if (0 != _access(_pathOutput.c_str(), 0))//输出目录不存在,则创建目录
		{
			if (0 != _mkdir(_pathOutput.c_str()))
				return false;
		}
	}
	// 备注 -- system命令中含有空格时,会导致命令错误理解,将其视作多个目录名字,将其用引号包含起来可以解决,即:a 改为 "a"
	{
		_pathOutput = "\"" + outPutFilePath+ "\"";
		_pathAudio = "\"" + _pathAudio + "\"";
		_pathVedio = "\"" + _pathVedio + "\"";
		_pathFfmpegExe = "\"" + _pathFfmpegExe + "\"";
	}
	//组合system命令
	string command =
		_pathFfmpegExe
		+ " -i " + _pathVedio
		+ " -i " + _pathAudio
		+ " -codec copy " + _pathOutput;
	//备注::多对双引号时,system,会去掉首尾 的双引号;所以在命令头部和尾部各自加一个双引号:
	command = "\"" + command + "\"";

	//执行命令
	// cout << "\n\n" + command + "\n\n" << endl;
	system(command.c_str());
	//检查执行结果
	if ( 0 != _access(outPutFilePath.c_str(),0) )
		return false;
	else
		return true;
}

vs2019,添加头文件<string>的时候,使用system()方法时出现了“system不明确”的问题,不知道是因为什么。

‘删掉该头文件后可以继续使用

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 18:45:28  更:2022-01-30 18:47:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:55:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码