ubuntu下 gstreamer 的配置及播放音視訊例子
Gstreamer安裝:
使用sudo apt-get install 安裝
sudo apt-get install libgstreamer0.10-dev gstreamer-tools gstreamer0.10-tools gstreamer0.10-doc
sudo apt-get install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse
安裝瞭如下的gst的外掛:
gstreamer0.10-tools
gstreamer0.10-x
gstreamer0.10-plugins-base
gstreamer0.10-plugins-good
gstreamer0.10-plugins-ugly
gstreamer0.10-plugins-bad
gstreamer0.10-ffmpeg
gstreamer0.10-alsa
gstreamer0.10-schroedinger
gstreamer0.10-pulseaudio
有可能需要安裝的軟體:
sudo apt-get install bison
sudo apt-get install flex
sudo
apt-get install zlib1g
mad解碼外掛
apt-get
install libmad0-dev
apt-get
install gstreamer0.10-plugins-ugly
Initializing GStreamer
#include <stdio.h> #include <gst/gst.h> int main (int argc, char *argv[]) { const gchar *nano_str; guint major, minor, micro, nano; gst_init (&argc, &argv); gst_version (&major, &minor, µ, &nano); if (nano == 1) nano_str = "(CVS)"; else if (nano == 2) nano_str = "(Prerelease)"; else nano_str = ""; printf ("This program is linked against GStreamer %d.%d.%d %s\n", major, minor, micro, nano_str); return 0; }
#include <gst/gst.h>
#include <glib.h>
//定義訊息處理函式,
static gboolean bus_call(GstBus *bus,GstMessage *msg,gpointer data)
{
GMainLoop *loop = (GMainLoop *) data;//這個是主迴圈的指標,在接受EOS訊息時退出迴圈
switch (GST_MESSAGE_TYPE(msg))
{
case GST_MESSAGE_EOS:
g_print("End of stream\n");
g_main_loop_quit(loop);
break;
case GST_MESSAGE_ERROR:
{
gchar *debug;
GError *error;
gst_message_parse_error(msg,&error,&debug);
g_free(debug);
g_printerr("ERROR:%s\n",error->message);
g_error_free(error);
g_main_loop_quit(loop);
break;
}
default:
break;
}
return TRUE;
}
int main(int argc,char *argv[])
{
GMainLoop *loop;
GstElement *pipeline,*source,*decoder,*sink;//定義元件
GstBus *bus;
gst_init(&argc,&argv);
loop = g_main_loop_new(NULL,FALSE);//建立主迴圈,在執行 g_main_loop_run後正式開始迴圈
if(argc != 2)
{
g_printerr("Usage:%s <mp3 filename>\n",argv[0]);
return -1;
}
//建立管道和元件
pipeline = gst_pipeline_new("audio-player");
source = gst_element_factory_make("filesrc","file-source");
decoder = gst_element_factory_make("mad","mad-decoder");
sink = gst_element_factory_make("autoaudiosink","audio-output");
if(!pipeline||!source||!decoder||!sink){
g_printerr("One element could not be created.Exiting.\n");
return -1;
}
//設定 source的location 引數。即 檔案地址.
g_object_set(G_OBJECT(source),"location",argv[1],NULL);
//得到 管道的訊息匯流排
bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
//新增訊息監視器
gst_bus_add_watch(bus,bus_call,loop);
gst_object_unref(bus);
//把元件新增到管道中.管道是一個特殊的元件,可以更好的讓資料流動
gst_bin_add_many(GST_BIN(pipeline),source,decoder,sink,NULL);
//依次連線元件
gst_element_link_many(source,decoder,sink,NULL);
//開始播放
gst_element_set_state(pipeline,GST_STATE_PLAYING);
g_print("Running\n");
//開始迴圈
g_main_loop_run(loop);
g_print("Returned,stopping playback\n");
gst_element_set_state(pipeline,GST_STATE_NULL);
gst_object_unref(GST_OBJECT(pipeline));
return 0;
}
編譯執行
gcc -Wall test2.c -o test2 $(pkg-config --cflags --libs gstreamer-0.10)
(注意!!!很多地方寫的這條命令 :gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) -g test2.c -o test2
,根本編譯不過!)
編譯時藉助了 pkg-config
pkg-config --cflags --libs gstreamer-0.10 會把gstreamer-0.10編譯所依賴的庫的路徑 標頭檔案的路徑全部幫你找出來,不用你再依次寫出。
(上面這條pkg-config --cflags --libs gstreamer-0.10 就相當於:
-pthread -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/gstreamer-0.10
-I/usr/include/libxml2 -pthread -L/usr/lib/i386-linux-gnu -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lrt -lglib-2.0)
./test2 ./abc.mp3
播放視訊:
Ubuntu 12.04
gst-launch-0.10 filesrc location=/tmp/video_stream_pipe ! decodebin ! ffmpegcolorspace ! videoscale ! ximagesink sync=false
Ubuntu 13.10
gst-launch-1.0 filesrc location=/tmp/video_stream_pipe ! decodebin ! videoconvert ! xvimagesink sync=false
gst-launch-1.0 filesrc location=/tmp/video_stream_pipe ! decodebin ! videoconvert ! ximagesink sync=false
gst-launch-0.10(1) - Linux man page
Name
gst-launch - build and run a GStreamer pipeline
Synopsis
gst-launch [OPTION...] PIPELINE-DESCRIPTION
Description
gst-launch is a tool that builds and runs basicGStreamer pipelines.
In simple form, a PIPELINE-DESCRIPTION is a list of elements separated by exclamation marks (!). Properties may be appended to elements, in the formproperty=value.
For a complete description of possible PIPELINE-DESCRIPTIONS see the section pipeline descriptionbelow or consult the GStreamer documentation.
Please note that gst-launch is primarily a debugging tool for developers and users. You should not build applications on top of it. For applications, use the gst_parse_launch() function of the GStreamer API as an easy way to construct pipelines from pipeline descriptions.
Options
gst-launch accepts the following options:
- --help
Print help synopsis and available FLAGS
-v, --verboseOutput status information and property notifications-q, --quietDo not print any progress information-m, --messagesOutput messages posted on the pipeline's bus-t, --tagsOutput tags (also known as metadata)-o FILE, --output=FILESave XML representation of pipeline to FILE and exit-f, --no_faultDo not install a fault handler-T, --tracePrint memory allocation traces. The feature must be enabled at compile time to work.Gstreamer Options
gst-launch also accepts the following options that are common to all GStreamer applications:
- --gst-version
- Prints the version string of the GStreamer core library.
- --gst-fatal-warnings
- Causes GStreamer to abort if a warning message occurs. This is equivalent to setting the environment variable G_DEBUG to 'fatal_warnings' (see the section environment variables below for further information).
- --gst-debug=STRING
- A comma separated list of category_name:level pairs to specify debugging levels for each category. Level is in the range 0-5 where 0 will show no messages, and 5 will show all messages. The wildcard * can be used to match category names.
Use --gst-debug-help to show category names
Example: GST_CAT:5,GST_ELEMENT_*:3,oggdemux:5
- --gst-debug-level=LEVEL
- Sets the threshold for printing debugging messages. A higher level will print more messages. The useful range is 0-5, with the default being 0.
- --gst-debug-no-color
- GStreamer normally prints debugging messages so that the messages are color-coded when printed to a terminal that handles ANSI escape sequences. Using this option causes GStreamer to print messages without color. Setting theGST_DEBUG_NO_COLOR environment variable will achieve the same thing.
- --gst-debug-disable
- Disables debugging.
- --gst-debug-help
- Prints a list of available debug categories and their default debugging level.
- --gst-plugin-spew
- GStreamer info flags to set Enable printout of errors while loading GStreamer plugins
- --gst-plugin-path=PATH
- Add directories separated with ':' to the plugin search path
- --gst-plugin-load=PLUGINS
- Preload plugins specified in a comma-separated list. Another way to specify plugins to preload is to use the environment variable GST_PLUGIN_PATH
Pipeline Description
A pipeline consists elements and links. Elements can be put into bins of different sorts. Elements, links and bins can be specified in a pipeline description in any order.
Elements
ELEMENTTYPE [PROPERTY1 ...]
Creates an element of type ELEMENTTYPE and sets the PROPERTIES.
Properties
PROPERTY=VALUE ...
Sets the property to the specified value. You can use gst-inspect(1) to find out about properties and allowed values of different elements.
Enumeration properties can be set by name, nick or value.
Bins
[BINTYPE.] ( [PROPERTY1 ...] PIPELINE-DESCRIPTION )
Specifies that a bin of type BINTYPE is created and the given properties are set. Every element between the braces is put into the bin. Please note the dot that has to be used after the BINTYPE. You will almost never need this functionality, it is only really useful for applications using the gst_launch_parse() API with 'bin' as bintype. That way it is possible to build partial pipelines instead of a full-fledged top-level pipeline.
Links
[[SRCELEMENT].[PAD1,...]] ! [[SINKELEMENT].[PAD1,...]] [[SRCELEMENT].[PAD1,...]] ! CAPS ! [[SINKELEMENT].[PAD1,...]]
Links the element with name SRCELEMENT to the element with name SINKELEMENT, using the caps specified in CAPS as a filter. Names can be set on elements with the name property. If the name is omitted, the
element that was specified directly in front of or after the link is used. This works across bins. If a padname is given, the link is done with these pads. If no pad names are given all possibilities are tried and a matching pad is used. If multiple padnames
are given, both sides must have the same number of pads specified and multiple links are done in the given order.
So the simplest link is a simple exclamation mark, that links the element to the left of it to the element right of it.
Caps
MIMETYPE [, PROPERTY[, PROPERTY ...]]] [; CAPS[; CAPS ...]]
Creates a capability with the given mimetype and optionally with given properties. The mimetype can be escaped using " or '. If you want to chain caps, you can add more caps in the same format afterwards.
Properties
NAME=[(TYPE)]VALUE
in lists and ranges: [(TYPE)]VALUE
Sets the requested property in capabilities. The name is an alphanumeric value and the type can have the following case-insensitive values:
- i or int for integer values or ranges
- f or float for float values or ranges
- 4 or fourcc for FOURCC values
- b, bool or boolean for boolean values
- s, str or string for strings
- fraction for fractions (framerate, pixel-aspect-ratio)
- l or list for lists
If no type was given, the following order is tried: integer, float, boolean, string.
Integer values must be parsable by strtol(), floats by strtod(). FOURCC values may either be integers or strings. Boolean values are (case insensitive) yes, no, true or false and may like
strings be escaped with " or '.
Ranges are in this format: [ VALUE, VALUE ]
Lists use this format: ( VALUE [, VALUE ...] )
Pipeline Control
A pipeline can be controlled by signals. SIGUSR2 will stop the pipeline (GST_STATE_NULL); SIGUSR1 will put it back to play (GST_STATE_PLAYING). By default, the pipeline will start in the playing state.
There are currently no signals defined to go into the ready or pause (GST_STATE_READY and GST_STATE_PAUSED) state explicitely.
Pipeline Examples
The examples below assume that you have the correct plug-ins available. In general, "osssink" can be substituted with another audio output plug-in such as "esdsink", "alsasink", "osxaudiosink", or "artsdsink". Likewise, "xvimagesink" can be substituted with "ximagesink", "sdlvideosink", "osxvideosink", or "aasink". Keep in mind though that different sinks might accept different formats and even the same sink might accept different formats on different machines, so you might need to add converter elements like audioconvert and audioresample (for audio) or ffmpegcolorspace (for video) in front of the sink to make things work.
Audio playback
gst-launch filesrc location=music.mp3 ! mad ! audioconvert ! audioresample ! osssink
Play the mp3 music file "music.mp3" using a libmad-based plug-in and output to an OSS device
gst-launch filesrc location=music.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! osssink
Play an Ogg Vorbis format file
gst-launch gnomevfssrc location=music.mp3 ! mad ! osssink
gst-launch gnomevfssrc location=http://domain.com/music.mp3 ! mad ! audioconvert ! audioresample ! osssink
Play an mp3 file or an http stream using GNOME-VFS
gst-launch gnomevfssrc location=smb://computer/music.mp3 ! mad ! audioconvert ! audioresample ! osssink
Use GNOME-VFS to play an mp3 file located on an SMB server
Format conversion
gst-launch filesrc location=music.mp3 ! mad ! audioconvert ! vorbisenc ! oggmux ! filesink location=music.ogg
Convert an mp3 music file to an Ogg Vorbis file
gst-launch filesrc location=music.mp3 ! mad ! audioconvert ! flacenc ! filesink location=test.flac
Convert to the FLAC format
Other
gst-launch filesrc location=music.wav ! wavparse ! audioconvert ! audioresample ! osssink
Plays a .WAV file that contains raw audio data (PCM).
gst-launch filesrc location=music.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=music.ogg
gst-launch filesrc location=music.wav ! wavparse ! audioconvert ! lame ! filesink location=music.mp3
Convert a .WAV file containing raw audio data into an Ogg Vorbis or mp3 file
gst-launch cdparanoiasrc mode=continuous ! audioconvert ! lame ! id3v2mux ! filesink location=cd.mp3
rips all tracks from compact disc and convert them into a single mp3 file
gst-launch cdparanoiasrc track=5 ! audioconvert ! lame ! id3v2mux ! filesink location=track5.mp3
rips track 5 from the CD and converts it into a single mp3 file
Using gst-inspect(1), it is possible to discover settings like the above for cdparanoiasrc that will tell it to rip the entire cd or only tracks of it. Alternatively, you can use an URI and gst-launch-0.10 will find an element (such as cdparanoia) that supports that protocol for you, e.g.: gst-launch cdda://5 ! lame vbr=new vbr-quality=6 ! filesink location=track5.mp3
gst-launch osssrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=input.ogg
records sound from your audio input and encodes it into an ogg file
Video
gst-launch filesrc location=JB_FF9_TheGravityOfLove.mpg ! dvddemux ! mpeg2dec ! xvimagesink
Display only the video portion of an MPEG-1 video file, outputting to an X display window
gst-launch filesrc location=/flflfj.vob ! dvddemux ! mpeg2dec ! sdlvideosink
Display the video portion of a .vob file (used on DVDs), outputting to an SDL window
gst-launch filesrc location=movie.mpg ! dvddemux name=demuxer demuxer. ! queue ! mpeg2dec ! sdlvideosink demuxer. ! queue ! mad ! audioconvert ! audioresample ! osssink
Play both video and audio portions of an MPEG movie
gst-launch filesrc location=movie.mpg ! mpegdemux name=demuxer demuxer. ! queue ! mpeg2dec ! ffmpegcolorspace ! sdlvideosink demuxer. ! queue ! mad ! audioconvert ! audioresample ! osssink
Play an AVI movie with an external text subtitle stream
This example also shows how to refer to specific pads by name if an element (here: textoverlay) has multiple sink or source pads.
gst-launch textoverlay name=overlay ! ffmpegcolorspace ! videoscale ! autovideosink filesrc location=movie.avi ! decodebin2 ! ffmpegcolorspace ! overlay.video_sink filesrc location=movie.srt ! subparse ! overlay.text_sink
Play an AVI movie with an external text subtitle stream using playbin2
gst-launch playbin2 uri=file:///path/to/movie.avi suburi=file:///path/to/movie.srt
Network streaming
Stream video using RTP and network elements.
gst-launch v4l2src ! video/x-raw-yuv,width=128,height=96,format='(fourcc)'UYVY ! ffmpegcolorspace ! ffenc_h263 ! video/x-h263 ! rtph263ppay pt=96 ! udpsink host=192.168.1.1 port=5000 sync=false
Use this command on the receiver
gst-launch udpsrc port=5000 ! application/x-rtp, clock-rate=90000,payload=96 ! rtph263pdepay queue-delay=0 ! ffdec_h263 ! xvimagesink
This command would be run on the transmitter
Diagnostic
gst-launch -v fakesrc num-buffers=16 ! fakesink
Generate a null stream and ignore it (and print out details).
gst-launch audiotestsrc ! audioconvert ! audioresample ! osssink
Generate a pure sine tone to test the audio output
gst-launch videotestsrc ! xvimagesink
gst-launch videotestsrc ! ximagesink
Generate a familiar test pattern to test the video output
Automatic linking
You can use the decodebin element to automatically select the right elements to get a working pipeline.
gst-launch filesrc location=musicfile ! decodebin ! audioconvert ! audioresample ! osssink
Play any supported audio format
gst-launch filesrc location=videofile ! decodebin name=decoder decoder. ! queue ! audioconvert ! audioresample ! osssink decoder. ! ffmpegcolorspace ! xvimagesink
Play any supported video format with video and audio output. Threads are used automatically. To make this even easier, you can use the playbin element:
gst-launch playbin uri=file:///home/joe/foo.avi
Filtered connections
These examples show you how to use filtered caps.
gst-launch videotestsrc ! 'video/x-raw-yuv,format=(fourcc)YUY2;video/x-raw-yuv,format=(fourcc)YV12' ! xvimagesink
Show a test image and use the YUY2 or YV12 video format for this.
gst-launch osssrc ! 'audio/x-raw-int,rate=[32000,64000],width=[16,32],depth={16,24,32},signed=(boolean)true' ! wavenc ! filesink location=recording.wav
record audio and write it to a .wav file. Force usage of signed 16 to 32 bit samples and a sample rate between 32kHz and 64KHz.
Environment Variables
GST_DEBUG
- Comma-separated list of debug categories and levels, e.g. GST_DEBUG=totem:4,typefind:5
- GST_DEBUG_NO_COLOR
- When this environment variable is set, coloured debug output is disabled.
- GST_DEBUG_DUMP_DOT_DIR
- When set to a filesystem path, store dot files of pipeline graphs there.
- GST_REGISTRY
- Path of the plugin registry file. Default is ~/.gstreamer-0.10/registry-CPU.xml where CPU is the machine/cpu type GStreamer was compiled for, e.g. 'i486', 'i686', 'x86-64', 'ppc', etc. (check the output of "uname -i" and "uname -m" for details).
- GST_REGISTRY_UPDATE
- Set to "no" to force GStreamer to assume that no plugins have changed, been added or been removed. This will make GStreamer skip the initial check whether a rebuild of the registry cache is required or not. This may be useful in embedded environments where the installed plugins never change. Do not use this option in any other setup.
- GST_PLUGIN_PATH
- Specifies a list of directories to scan for additional plugins. These take precedence over the system plugins.
- GST_PLUGIN_SYSTEM_PATH
- Specifies a list of plugins that are always loaded by default. If not set, this defaults to the system-installed path, and the plugins installed in the user's home directory
- OIL_CPU_FLAGS
- Useful liboil environment variable. Set OIL_CPU_FLAGS=0 when valgrind or other debugging tools trip over liboil's CPU detection (quite a few important GStreamer plugins like videotestsrc, audioconvert or audioresample use liboil).
- G_DEBUG
- Useful GLib environment variable. Set G_DEBUG=fatal_warnings to make GStreamer programs abort when a critical warning such as an assertion failure occurs. This is useful if you want to find out which part of the code caused that warning to be triggered and under what circumstances. Simply set G_DEBUG as mentioned above and run the program in gdb (or let it core dump). Then get a stack trace in the usual way.
Files
~/.gstreamer-0.10/registry-*.xml
- The xml plugin database; can be deleted at any time, will be re-created automatically when it does not exist yet or plugins change.
相關推薦
ubuntu下 gstreamer 的配置及播放音視訊例子
Gstreamer安裝: 使用sudo apt-get install 安裝 sudo apt-get install libgstreamer0.10-dev gstreamer-tools gstreamer0.10-tools gstreamer0.10-
ubuntu下網路配置及IP修改
以下內容為原創,歡迎轉載,轉載請說明來源:https://blog.csdn.net/masterbee/article/details/80253820 當安裝完成ubuntu或其它類似的linux系統後,為了連線上網,一般還需要配置網路IP等操作。 簡單步驟如下: 1、首先先檢視PCI
ubuntu下Pycharm安裝及配置
字體大小 creat 配置 註冊 字體 spa tar.gz mark 註冊碼 1.從http://www.jetbrains.com/pycharm/download/下載最新的Pycharm tar xfz pycharm-*.tar.gz,將Pycharm文件夾解壓到
ubuntu 下rabbitMQ安裝及配置遠端訪問web管理介面
#1 更新 apt-get update apt-get upgrade #2 安裝Erlang wget http://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc apt-key add erla
ubuntu 下安裝memcached及配置遠端訪問
官網地址 wget 下載 wget http://memcached.org/files/memcached-1.5.9.tar.gz 解壓 tar -zxvf memcached-1.
ubuntu下安裝eclipse及配置使用c/c++
ubuntu下安裝eclipse 安裝eclipse及jdk包 配置在eclipse上使用c++ 目錄 安裝eclipse 1.下載jdk 2.下載eclipse 3.將jdk解壓 到 /opt/jvm/資
Ubuntu下安裝MySQL及簡單操作
base lms vsp pic splay mysql- != nbsp tar Ubuntu上安裝MySQL非常簡單只需要幾條命令就可以完成。 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-c
ubuntu下安裝mysql及卸載mysql方法
查看 ati 用戶名 google mysql-cli entos googl 通過 oot 首先: 別的系統下可能是 sudo apt-get install libaio 但在 Ubuntu Kylin 下 需要 sudo apt-get install liba
Ubuntu下安裝配置redis
命令 rep -c col 安裝配置 pan 令行 .html cli 安裝redis apt-get install redis-server 查看是否啟動 ps -aux|grep redis 客戶端連接 註: 安裝Redis服務器,會自動地一起安裝
ubuntu下IDEA配置tomcat報錯Warning the selected directory is not a valid tomcat home
warn 技術 span 更改 文件目錄 tor 選擇 spa .com 產生這個問題的主要原因是文件夾權限問題。 可以修改文件夾權限或者更改tomcat文件目錄所有者。 這裏我直接變更tomcat文件夾所有者: sudo chown -R skh:skh tomcat-
ubuntu下安裝Teamviewer及使用
這兩天一直在折騰Teamviewer的安裝,一路遇到了不少坑,特此整理記錄吧。 一、Windows和Ubuntu環境下安裝Teamviewer 我們常用的功能是Windows下遠端控制Ubuntu,此時兩個環境下的Teamviewer版本要保證一致,否則一方會提示另
ubuntu下Qt配置qwt和libmodbus
Qt安裝在ubuntu上出了很多問題,其中一個就是qmake不能用。 解決方法:進入/usr/lib/x86_64-linux-gnu/qt-default/qtchooser目錄,對目錄下的default.conf修改為 /home/mlw/Qt5.7.0/5.7/gcc_64/bin /
【GitHub】 初學Git,Github在Ubuntu下的配置
1.參考連結:https://blog.csdn.net/tina_ttl/article/details/51326684 http://www.runoob.com/w3cnote/git-guide.html 開始使用github 1. 配置git git config --g
ubuntu下安裝curl及報錯處理
1)安裝curl 1.1 下載安裝包 wget https://curl.haxx.se/download/curl-7.55.1.tar.gz 1.2 解壓 tar -xzvf curl-7.55.1.tar.gz 1.3 安裝 cd curl-
Ubuntu下搭建Nginx伺服器+整合RTMP視訊直播流處理(邊做邊做更新)
簡介: 要求:做一個網頁獲取攝像頭的視訊流,然後將視訊流經過流伺服器推送到後臺視訊處理伺服器,再由後臺視訊處理伺服器推送到流伺服器,最終推送到頁面。如圖: 經過查閱資料,目前有red5以及nginx+nginx-rtmp-module實現,選擇第二種方式來實現。 準備工作:
IntelliJ IDEA下SVN配置及使用詳解
第一步、安裝SVN客戶端 下載並安裝TortoiseSVN,我安裝的版本是1.8。整個過程一路next即可。但是要注意下圖所示的command line client tools一定要勾選上。 安裝完SVN客戶端後進入IDAE的settings進行設定,如圖
Android FFmpeg系列——4 子執行緒播放音視訊
利用工作閒餘時間,終於實現在子執行緒播放音視訊! 上一接學習了在 C 使用多執行緒,接著就是利用 C 多執行緒同時播放音視訊(暫時還不同步)。 不多說,直接上碼。 程式碼 // C 層播放器結構體 typedef struct _Player { //
Opencv 2.4.9在Ubuntu下的配置與安裝
一、依賴包安裝 1. build-essential 軟體包,為編譯程式提供必需軟體包的列表資訊,這樣軟體包才知道標頭檔案、庫函式在哪裡。還會下載依賴的軟體包,安裝gcc/g++/gdb/make 等基本程式設計工具,最後才組成一個開發環境。 sudo a
Ubuntu 18.04配置及美化
首先更新一下 sudo apt update && sudo apt upgrade 一 基礎軟體安裝 office 如果需要將預設的libreoffice替換為WPS可以參考16.04的操作。 中文輸入法 安裝搜狗輸
ubuntu下如何配置靜態ip
前些天在xubuntu 18.04 desktop上設定了下靜態IP,發現與centos/linux中區別極大。 1、首先檢視網絡卡名 $ ip a / ifconfig 2、 cp一份yaml檔案,改個名字 $ sudo cp /etc/netplan/*.yaml /etc/