1.キャリア開発の混乱
数日前、私はオーディオとビデオの開発学習記録の要約、記事のリンクを投稿しました:https ://blog.csdn.net/Linuxhus/article/details/112705431
一部のネチズンから手紙やメッセージを受け取りましたが、フィードバックは次のとおりです。
1.「私は新卒です。どうすれば早く成長できますか」
2.「私はC / C ++しか知りませんが、Android開発またはiOS開発を学ぶことは有望ですか?」
3.「私はAndroid / iOS開発者であり、完全なアプリ開発を完了して独立して起動できますが、どうすれば改善を続けることができますか?」
4.「オーディオとビデオの開発に従事したいのですが、どのように始めればよいですか?どのように進めますか?」
皆さんがこのような問題を抱えているのは嬉しいことです。それは、あなたが自分自身を向上させるために一生懸命働き続けたいという前向きな人であるという側面からも反映されているからです。
簡単な質問から始めましょう。「Android開発は有望ですか、それともiOS開発は有望ですか?」
実際、この質問は「PHPは世界で最高の言語ですか」と同じです。論争を引き起こすだけですが、実用的な価値はありません。私の意見では、Windows、Linux、Android、iOSのいずれの開発でもかまいません。 、長所と短所はありません。実際、それらには多くの共通点があります。つまり、次のとおりです。
すべては、特定の要件の実現を完了するためにオペレーティングシステムによって提供されるAPIに基づいています
もちろん、次のようないくつかの違いもあります。
1.システムのAPIと機能が異なります
2.さまざまなプログラミング言語、Windows / Linuxは主にC / C ++、Androidは主にJava、iOSは主にObjectCなどです。
ただし、プラットフォームに関係なく、学習曲線は実際には類似しており、次のリンクをほぼ通過する必要があります。
C / C ++、Java、Object C、Javascriptなどの対応するプラットフォームのプログラミング言語を学びます。UIライブラリ、ネットワーク、ファイル、データベース、画像処理など、対応するプラットフォームによって提供されるAPIに精通している。マルチメディア処理など。プラットフォーム関連の機能、フレームワーク、および原則(WindowsのWINSOCK、ODBC、WPFなど)、Unixの設計哲学、Androidの4つの主要コンポーネント、iOSのMVCモデルなどを習得します。特定のプロジェクトを通じて、精通しているそして練習はどんな機能の開発も達成することができます。
手順4に到達すると、ボトルネックに遭遇したと感じることが多く、記事の冒頭のような問題が発生します。次の手順は何ですか。
実際、私は常に次のような見方をしています。
「アプリケーション開発のためのプラットフォームベースのAPIは、遠くまで行くことができる方向ではありません。真の価値は、次のような特定のビジネスの方向との組み合わせにあります」。
1.サイバーセキュリティ
2.オーディオとビデオ
3.スマートハードウェア
4.ディープラーニング
5.ビッグデータ
6.その他(財務、通信など)
特定の事業分野では、ゆっくりと落ち着き、自分の努力と時間を使ってドメイン知識の深い理解と蓄積を獲得し、開発者から業界を最もよく知っている専門家に徐々に移行することができます。
今日は主にあなたと共有します、あなたがオーディオとビデオの分野に興味があるなら、あなたはどのように始めて改善するべきですか?
FFmpeg、オーディオおよびビデオ開発ビデオ学習資料+オーディオおよびビデオの高度な開発qun:オーディオおよびビデオ資料を入手してメモするためにジャンプします。または+1035101242(VX同じ番号)
ビデオリンク:FFmpeg / WebRTC / RTMPオーディオおよびビデオストリーミングメディア高度な開発-学習ビデオ
2.オーディオおよびビデオ開発に含まれるもの
記事ではオーディオとビデオの開発に関するすべての知識ポイントを説明することはできませんが、一般的な学習ルートを整理することができます。次の図を見てみましょう。
実際、オーディオとビデオの開発は、画像、オーディオ、およびビデオの基本的な知識を習得し、一連の開発とアプリケーションを収集、レンダリング、処理、および送信する方法を学ぶことです。
-
取得:データの出所の問題を解決します
-
レンダリング:データの表示方法の問題を解決します
-
処理:データの処理方法の問題を解決します
-
送信:データを共有する方法の問題を解決します
各カテゴリを深く掘り下げて、画像をより効率的にレンダリングする方法、オーディオとビデオの圧縮率を改善する方法、弱いネットワークでオーディオとビデオのデータの送信を最適化する方法など、技術的な課題に満ちた次々と導き出すことができます。 、 等々。
実際、オーディオとビデオの開発の技術的な蓄積はそれほど難しくありません。問題を抱えてGoogleにアクセスし、タスクを練習してください。すべてが問題ではありません。上記の4つの方向を調べ、知識のポイントを1つずつ調べてみましょう。私たちが理解し、習得するために。
2.1コレクション
コレクション、それはデータがどこから来るのかという問題を解決します、それでデータはどこから来るのですか?
実際、どのプラットフォーム、画像、ビデオが元々カメラからのものであり、オーディオが元々マイクからのものであるかに関係なく、オーディオとビデオの収集を行うには、次の技術的知識を習得する必要があります。
a。システムのカメラキャプチャインターフェイスとその使用方法は何ですか?
といった:
1、Windows:DirectShow
2、Linux:V4L2
3、Android:カメラ
4、iOS:AVCaptureSession
b。システムのカメラによって収集されたパラメーターを構成する方法と、それらはどういう意味ですか?
1.例:解像度、フレームレート、プレビュー方向、フォーカス、フラッシュなど。
c。システムのカメラによって出力される画像/ビデオデータの形式は何ですか?異なる形式の違いは何ですか?
といった:
1.画像:JPEG;
2.ビデオデータ:NV21、NV12、I420など。
d。システムのマイク収集インターフェースとその使用方法は何ですか?
といった:
1、Windows:DirectShow
2、Linux:ALSA&OSS
3、Android:AudioRecord
4、iOS:オーディオユニット
e。システムのマイク収集パラメーターを構成する方法とその意味は何ですか?
といった:
1.サンプリングレート、チャンネル番号、ビット幅など。
f。システムのマイクから出力されるオーディオデータの形式は何ですか?
といった:
1、PCM
2.2レンダリング
レンダリング、データの表示方法、次にデータの表示方法の問題を解決しますか?
実際、どのプラットフォーム、画像、ビデオが最終的にビューに描画され、オーディオが最終的にスピーカーに出力されるかに関係なく、オーディオとビデオのレンダリングを行うには、次の技術的知識を習得する必要があります。
a。YUV画像データの画像またはフレームを描画するためにシステムが提供するAPIは何ですか?
といった:
1、Windows:DirectDraw、Direct3D、GDI、OpenGL等
2、Linux: GDI, OpenGL 等
3、Android:ImageView、SurfaceView、TextureView、OpenGL等
4、iOS:CoreGraphics、OpenGL等
b。mp3またはpcmデータを再生するためにシステムはどのAPIを提供しますか?
といった:
1、Windows:DirectSound等
2、Linux:ALSA & OSS 等
3、Android:AudioTrack等
4. iOS:AudioQueueなど。
2.3処理
処理、それはデータを処理する方法の問題を解決します、そして、データはどのように処理することができますか?
まず、画像/音声/動画データに対してどのような処理ができるか見てみましょう。
実際、プラットフォーム、画像、オーディオ、ビデオの処理、システムAPIに関係なく、それらのほとんどは、いくつかのクロスプラットフォームのサードパーティライブラリに依存します。これらのサードパーティの原則と使用法を習得することにより、ライブラリでは、基本的に毎日のオーディオおよびビデオ処理作業に対応できます。これらのライブラリには次のものが含まれますが、これらに限定されません。
a。画像処理:OpenGL、OpenCV、libyuv、ffmpegなど。
b。ビデオコーデック:x264、OpenH264、ffmpegなど。
c。オーディオ処理:speexdsp、ffmpegなど。
d。オーディオコーデック:libfaac、opus、speex、ffmpegなど。
したがって、これらのサードパーティライブラリの使用法を学び、習得することが非常に必要です。
2.4送信
送信、それはデータを共有する方法の問題を解決し、次にデータを共有する方法は?
共有、最も重要なポイントは合意です。
インターネットがこれほど活発に発展し、全世界を緊密に接続できる理由は、実際にはW3C委員会の多大な貢献と切り離せないものだと思います。どのようなデータであっても、さまざまな国やさまざまなデバイス間で相互接続する必要があるからです。相互通信「標準」と切り離せない「標準」で、誰もがお互いを理解することができます。
したがって、オーディオとビデオの伝送を研究することは、実際にはプロトコルを研究することです。具体的なプロトコルは何ですか?
a。FLV、ts、mpeg4など、送信前にオーディオとビデオをパックする方法。
b。RTMP、RSTPなどのライブストリーミングの一般的なプロトコルは何ですか。
c。RTMP、HLS、HDL、RTSPなどのライブストリーミングの一般的なプロトコルは何ですか。
d。UDPベースのプロトコルとは何ですか?例:RTP / RTCP、QUICなど。
インターネット環境でのオーディオとビデオの送信は、非常に困難で価値のある方向です。弱いネットワークの下での送信遅延とストールを解決し、ユーザーエクスペリエンスを向上させるために、業界全体が常に詳細な調査を行っています。最適化。
3.まとめ
スペースの制限により、これで体験の共有は終わりです。オーディオとビデオの旅は非常に長いです。自分で学び、練習し、究極を追求する精神で探求し、最適化することが重要です。私は信じています。誰もが急速に成長し、現実になることができます。業界の専門家!
4.学習ルートマップ
学習資料へのリンク:FFmpeg / WebRTC / RTMPオーディオおよびビデオストリーミングメディア高度な開発-学習ビデオ