小编Sam*_*Sam的帖子

C++ struct可以有成员函数吗?

我对结构和类之间的区别感到非常困惑,因为我似乎看到它们用于几乎相同的东西.我搜索了差异,我看到的唯一答案是默认情况下结构体有公共成员,默认情况下类有私有成员.但是,我的讲师刚刚告诉我结构不能包含成员函数.但我在互联网上看到很多线程,其中人们在结构中包含成员函数,并且具体说这样做是可以的.

我的讲师似乎坚持认为结构定义不具备功能,所以发生了什么?我唯一能想到的是,编译器可能会将结构中的函数更改为其他内容,以便它们在技术上不包含函数......这些矛盾是否有明确的答案?

c++ struct class member-functions

40
推荐指数
3
解决办法
6万
查看次数

使用ffmpeg设置字幕语言

我尝试用谷歌搜索一种方法来设置字幕流的语言与ffmpeg并找到-slang选项.所以我尝试了以下命令,但立即收到错误:

ffmpeg -i input.avi -i subs.srt -c:a copy -c:s mov_text -slang eng -c:v libx264 -profile:v high -level:v 4.0 output.mp4
ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 18 2013 23:00:53 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
Run Code Online (Sandbox Code Playgroud)

libavutil 52. 13.100/52. 13.100

libavcodec 54. 86.100/54. 86.100

libavformat 54. 59.106/54. 59.106

libavdevice 54. 3.102/54. 3.102

libavfilter 3. 32.100/3. 32.100

libswscale 2. 1.103/2. 1.103

libswresample 0. 17.102/0.17.102

libpostproc 52. 2.100/52. 2.100

无法识别的选项'俚语'.

拆分参数列表时出错:找不到选项

经过更多的谷歌搜索后,我发现了另一种使用-metadata命令的方法:

ffmpeg -i …
Run Code Online (Sandbox Code Playgroud)

ffmpeg subtitle

9
推荐指数
2
解决办法
2万
查看次数

Ffmpeg复制音频流并对此新流进行编码

由于兼容性问题,我需要重新编码一些视频文件.它们目前是具有h.264视频和ac3-a52音频的mkv文件.我想保留h.264视频,将容器转换为m4v并创建两个音轨,一个使用原始的ac3-a52,另一个是从a32立体声中复制的.

我假设必须有某种音频流映射命令,但我不知道如何同时映射和重新编码.我应该在ffmpeg中输入什么命令来实现这一目标?

另外,ac3和ac3-a52有什么区别?Apple TV仍然可以通过ac3-a52还是必须转换为ac3?

mapping audio ffmpeg

8
推荐指数
2
解决办法
2万
查看次数

未指定任何内容时的默认ffmpeg编解码器

如果我导入一个文件与ffmpeg一起使用但是没有指定任何关于任何流的编解码器的内容,那么ffmpeg会做什么吗?是否只是复制编解码器的默认操作?或者ffmpeg使用某些默认编解码器对输入文件进行编码?

以下两个命令是否相同?或者第二次重新编码并需要多长时间?

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

ffmpeg -i input.mkv output.mp4
Run Code Online (Sandbox Code Playgroud)

ffmpeg codec

7
推荐指数
2
解决办法
9301
查看次数

如何使用ffmpeg设置默认流

我有一些m4v文件,我想用ffmpeg添加字幕.我知道我需要映射流以将它们输入到输出文件中,但是如何确保此字幕流将是默认流?字幕是.srt,人们似乎在说他们与mp4容器不兼容,我需要将字幕转换为第一个?

此外,各种流的顺序是否重要?是否必须首先播放视频流,然后是音频,然后是字幕?或者你可以随意混合起来吗?它有什么不同吗?

最后,默认流和强制流之间有什么区别?

ffmpeg stream subtitle

5
推荐指数
1
解决办法
9297
查看次数

检查文件是否存在而不打开它

在继续我的程序之前,如何检查目录中是否存在文件?我已经阅读了尝试使用各种方法打开文件的答案,但我的问题是,大多数情况下,我正在检查的文件将损坏并且无法打开.这发生在我的程序的错误检查部分,只有在前面的代码中发生错误时才会触发.我想检查文件是否存在,如果是,则要求删除它,否则只打印一些消息.

我怎么能这样做?

(只是删除并接受错误会起作用,但我这样做是为了学习,所以我想要正确地做...)

编辑:

我已经下载了Boost来使用文件系统库并编译它,看似没有错误,但是当我尝试编译我的程序时,我得到了这个响应:

g++ program.cpp -I <path to>/boost_1_54_0 -o output

Undefined symbols for architecture x86_64:
"boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)", referenced from:
  boost::filesystem::exists(boost::filesystem::path const&)in cc1XX8rD.o
"boost::system::system_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in cc1XX8rD.o
"boost::system::generic_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in cc1XX8rD.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我在程序中使用boost的唯一地方是:

boost::filesystem::path my_file(s4);
if (boost::filesystem::exists(my_file)){ ...
Run Code Online (Sandbox Code Playgroud)

c++ macos error-handling file delete-file

5
推荐指数
1
解决办法
7758
查看次数