mplayer 常用命令
27 Oct 2013查看视频信息
mplayer -vo null -vc null -nosound -frames 0 -identify
使用vdpau解码器
mplayer -vo vdpau -vc ffh264vdpau [filename]
mplayer -vo null -vc null -nosound -frames 0 -identify
mplayer -vo vdpau -vc ffh264vdpau [filename]
ffmpeg -i video.mpg image%d.jpg
其他支持的格式:
PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI ...
这里只是转换了包装格式,不改变视频和音频编码格式。 -vcodec copy:拷贝源视频编码格式 -acodec copy:拷贝源音频编码格式
ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy output.mov
其它常用参数: -s:设置视频大小
ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy -s 1920x1080 output.mov
-r:设置视频帧率
ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy -r 29.97 output.mov
-b:设置视频码率
ffmpeg -i inputfile.mov -acodec copy -vcodec copy -s 1920x1080 -r 25 -b 20k output.mov
ffmpeg -f alsa -i hw:0 alsaout.wav
ffprobe -v quiet -print_format json -show_format -show_streams 1kHz_0dBfs_L_aacPlusv2_32.aac
ffmpeg -i input_file -c copy -map 0 -f segment -segment_list out.m3u8 -segment_time 10 file%04d.ts
ffprobe -loglevel error -skip_frame nokey -select_streams v:0 -show_entries frame=pkt_pts_time -of csv=print_section=0 input.mp4
ffprobe -select_streams v -show_frames input.mp4
OS:ubuntu 12.04
JSONCPP : 0.5.0
JSONCPP是一个比较流行的C/C++用来解析json的库,最新的版本是0.5.0,源代码下载地址点击 这里
JSONCPP的编译需要使用scons(ubuntu的用户直接apt-get install scons即可),编译成功后会在jsoncpp-src-0.5.0/libs/linux-gcc-4.7/
下生成一个libjson_linux-gcc-4.7_libmt.so
,开发头文件在include文件夹下。在编译自己的项目时需要加入-ljson_linux-gcc-4.7_libmt
编译参数。
json中的object是“名称/值”对的无序集合,类似于STL中的map。一个object以左大括号’{‘开始,右大括号结束’}’,名称和值之间使用冒号’:’分割,“名称/值”对与“名称/值”对之间使用逗号’,’分割。object可以被嵌套,可以作为其他类型的子元素。 一些例子:
{“id” : 1}
{“id” : 1, “name” : “lnmcc”, “age” : 100}
json中的数组,以左方括号’[‘开始,右方括号’]’结束,元素跟元素之间以逗号’,’分割。 一个例子:
文件test.json内容:
{
"id":7,
"type":"pic",
"deps":[
{"order":1,"path":"/home/11.bmp"},
{"order":1,"path":"/home/22.bmp"},
{"order":1,"path":"/home/44.bmp"},
{"order":2,"path":"/home/44.bmp"}
]
}
bool parseFile2(std::string path) {
std::ifstream in;
in.open(path.c_str(), std::ifstream::in);
assert(in.is_open());
Json::Reader reader;
Json::Value value;
if (!reader.parse(in, value, false)) {
std::cerr << "paser json file error!" << std::endl;
return false;
}
std::cout << "id : " << value["id"].asInt() << std::endl;
std::cout << "type : " << value["type"].asString() << std::endl;
Json::Value array;
array = value["deps"];
for(unsigned int i = 0; i < array.size(); i++) {
std::cout << "order : " << array[i]["order"].asInt() << std::endl;
std::cout << "path : " << array[i]["path"].asString() << std::endl;
}
return true;
}
如果不是从文件读入, JSONCPP也可以直接处理json字符串:
bool parseString(std::string str) {
Json::Reader reader;
Json::Value value;
if (!reader.parse(str, value)) {
std::cerr << "paser json string error!" << std::endl;
return false;
}
... ...
return true;
}
这3个宏在 sched.h 中定义。
不同操作系统的优先级范围是不相同的,所以在设置线程优先级的时候需要先使用下面2个函数来查询其最大值和最小值:
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
参数policy是上面介绍的调度策略中的SCHED_FILO
或SCHED_RR
,注意不能是SCHED_OTHER
,因为SCHED_OTHER
不支持优先级。
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
int pthread_attr_getschedparam(pthread_attr_t *attr, struct sched_param *param);
查询:
struct sched_param param;
//首先查询线程的调度策略,赋给param
//参数attr是create线程时所使用的线程属性
pthread_attr_getschedparam(attr, ¶m);
//从sched_param结构中获取线程优先级
param.__sched_priority;
设置:
pthread_attr attr;
struct sched_param param;
//为param设置优先级10,这个值的范围由查询系统获得
param.__sched_priority = 10;
//参数attr是create线程时所使用的线程属性
pthread_attr_setschedparam(attr, ¶m);
OS: ubuntu 12.04
NVIDIA: 319.37
笔记本在ubuntu下更新了NVIDIA显卡驱动后,Fn快捷键调节屏幕亮度的功能失效了,可以使用下面的方法重新启用:
在 /etc/X11/xorg.conf
的”Device”段加入一行:
Option "RegistryDwords" "EnableBrightnessControl=1"
现在xorg.conf
看起来可能是这样:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
Option "RegistryDwords" "EnableBrightnessControl=1"
EndSection