當前位置:首頁 » 操作系統 » ffmpeg源碼

ffmpeg源碼

發布時間: 2022-01-21 05:47:07

㈠ ffmpeg源碼是c還是c++

c語言開發的。教你一種辦法,查看庫函數等的源碼方法。

網路進入github網站,搜索ffmpeg,找到源碼。查看文件類型。

如圖

就知道是c語言開發的了

㈡ ffmpeg 有必要學習源碼嗎

ffmpeg 官方資料 維護的不是很好,很多函數的說明都不夠明確。所以學習ffmpeg的最好的方式是看源碼。ffmpeg的源碼結構還是挺清晰的,可讀性比較強,可以從官方的幾個常式開始看。網上也有中文的ffmpeg教程,講解了幾個主要函數,可以作為一個參考。如果只是應用的話,光看命令就行了。

㈢ 怎麼修改ffmpeg裡面的源碼,讓它實現流共享

while (1) {
AVPacket pkt;
// 不知道pkt是否完整
ret = av_read_frame(f->ctx, &pkt);

if (ret == AVERROR(EAGAIN)) {
av_usleep(10000);
continue;
}
if (ret < 0) {
av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
break;
}
}

FFMpeg不提供介面,那麼就只有修改FFMpeg源碼,瀏覽FFMpeg源碼一天後,對外的介面只需要在AVPacket結構體裡面增加一個判斷包完整性的標志變數,修改源碼後的介面調用如下:

while (1) {
AVPacket pkt;

ret = av_read_frame(f->ctx, &pkt);
if (pkt.nLostPackets) {
// Do something.
} else {
// Do something
}
}

㈣ ffmpeg有demo嗎

是要編譯libjnivideo.so和libjniaudio.so 這兩個so因為不同的版本或者修改過的framework是不一樣的,所以需要在android源碼中 編譯出自己的so。我的android 2.1源碼是從官網下載回來的,沒有經過修改。

下載鏈接中的native目錄下的源碼到framework/base目錄下具體看他的目錄結構。https://github:com/havlenapetr/android_frameworks_base編譯主要有3個錯誤

1.

library 'libjnigraphics.so' not in prelink map

當前目錄下的Android.mk 加上

LOCAL_PRELINK_MODULE := false2.

frameworks/base/native/video/jni/surface.cpp:17:36: error: surfaceflinger/Surface.h: No such file or directory

修改頭文件

#include <android/surface.h>

#include <ui/Surface.h>

#include <utils/Log.h>

#include <SkBitmap.h>

#include <SkCanvas.h>3.

make: *** 沒有規則可以創建「out/target/proct/generic/obj/SHARED_LIBRARIES/libjnivideo_intermediates/LINKED/libjnivideo.so」需要的目標「out/target/proct/generic/obj/lib/libsurfaceflinger_client.so」。 停止。

當前目錄下的Android.mk

LOCAL_SHARED_LIBRARIES := /

libskia /

libui /

libutils /

liblog

到這里如果幸運的話可以編譯出so。其次是編譯libffmpeg_jni.so

需要修改的地方:

1.

jni/jni/Android.mkLOCAL_C_INCLUDES += /

$(LOCAL_PATH)/../libffmpeg /

$(LOCAL_PATH)/../libmediaplayer /

$(LOCAL_PATH)/../include /

$(LOCAL_PATH)/../include/androidifeq ($(IN_NDK),true)

LOCAL_LDLIBS := -llog

else

LOCAL_PRELINK_MODULE := false

LOCAL_LDLIBS := -llog

LOCAL_SHARED_LIBRARIES := liblog

endif

2.

Vector.h#include <new>

#include <stdint.h>

#include <sys/types.h>#include <cutils/log.h>

#include <utils/VectorImpl.h>

#include <utils/TypeHelpers.h>

#include <android/Errors.h>

3.

<utils/TypeHelpers.h>4

VectorImpl.h#include <assert.h>

#include <stdint.h>

#include <sys/types.h>

#include <android/Errors.h>5.

VectorImpl.cpp

#include <string.h>

#include <stdlib.h>

#include <stdio.h>#include <cutils/log.h>

#include <android/Errors.h>

#include <utils/SharedBuffer.h>

#include <utils/VectorImpl.h>

同時也要把剛才兩個編譯出來的so放到obj/local/armeabi目錄下,之後就可以了編譯出libffmpeg_jni.so.

最後也要把剛才兩個so放到libs/armeabi目錄下。要不然運行的時候找不到。

播放的時候太卡了,聲音也沒有同步。

㈤ FFmpeg和h.264是什麼關系,是不是FFmpeg這套源碼中有以h.264標准設計的編碼器,可以這樣理解嗎

H.264是一種編碼協議,FFMPEG官網上是這樣說的:FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library. 在FFMPEG中還沒有H.264協議的編碼支持,這個要結合X264項目來進行H264編碼,先把X264裝上,然後再進行FFMPEG的配置,至於ffmpeg + x264進行H.264編碼可以再查看一些相關的帖子.

㈥ ffmpeg 代碼是不是完全開源

是的
本開源代碼播放器使用的音視頻解碼代碼來源於ffmpeg-0.6.3(http://www.ffmpeg.org),
jni銜接代碼和java層代碼來源於havlenapetr(https://github.com/havlenapetr/FFMpeg)。

移植ffmpeg到android的常規關鍵點網上有很多的帖子可以參考,也可以用文件夾比較工具比較一下,看看添加修改刪除了那些文件。

本開源代碼的編譯環境
1: Android SDK 2.2版,
2: NDK r4版,注意要導出NDK宏,

3: IDE開發環境是 eclips 3.5 版

4: libffplay.so是在Android 2.2版源碼目錄樹中編譯出來的,使用Ubuntu10.04和VMware7.1.1版,目前源碼不公開
5: libffmpeg.so編譯步驟,cd /cygwin/c/ffplay, ./config_r4.sh, $NDK/ndk-build
6: PC主機開發環境是windows xp。

特別注意,此demo只能在 Android SDK 2.2版上使用,其他版本有修改源碼,重新編譯才行。

此開源代碼解決了幾個特別關鍵點,達到實用水平。幾個關鍵點如下:
1:arm匯編代碼編譯支持,主要是在幾個.mk文件中添加LOCAL_ARM_MODE := arm語句,
在config_r4.sh文件中添加--arch=armv5te和--enable-asm 等開關。
2:在ffmpeg config_r4.sh配置文件中關閉了一些不用的選項後,連接時總是報一些莫名其妙的連接錯誤,
本開源代碼給出終極解決方案(在/jni/jni/Android.mk文件中添加 LOCAL_LDLIBS += C:/ffplay/bin/ndk/local/armeabi/libavcodec.a等語句)。
3:修改havlenapetr中的視頻顯示錯誤bug,經測試havlenapetr原始代碼在模擬器設置為320x480時顯示正確,在更大的解析度下顯示錯誤,
本開源代碼已修改好此bug,現在無論什麼解析度都可以正確顯示。

此開源代碼其他注意事項:

1:jni銜接代碼相比havlenapetr精簡了幾個數量級,更方便網友們研習。
2:此開源代碼不包括play,pause,stop,seek和視音頻同步等功能實現代碼,這部分代碼不開源。

3:Android jni層直接輸出音頻示例,Android jni層直接輸出視頻示例,基於ffmpeg的Android播放器開源代碼,三個工程使用相同的庫,相同的方法和技巧,可相互參考。

在moto defy me525上測試通過。

㈦ ffmpeg源碼太大了,我只想要H264轉到MP4的部分代碼,該怎麼辦

mp4是容器,在容器格式庫中找,libavformat
h.264是視頻編碼在編碼庫中找,libavcodec

㈧ ffmpeg是基於什麼語言編寫的

很負責人的告訴你 是用c語言寫的 是個龐然大物 集成了編碼解碼等功能 裡面按功能劃分成了幾個庫 也依賴了一些其他的庫 FFmpeg被應用於很多的播放器甚至是商業產品中 比如暴風影音 QQ影音等播放器都是基於它開發的 你可以在GitHub上或者FFmpeg官網上找到它的源碼

㈨ aforge.video.ffmpeg 源碼在哪

AForge.Net 是C#的一個圖像計算機視覺庫,該庫是一個開源項目,提供很多圖像的處理,和視頻處理功能

熱點內容
html文件上傳表單 發布:2024-09-17 03:08:02 瀏覽:783
聊天軟體編程 發布:2024-09-17 03:00:07 瀏覽:725
linuxoracle安裝路徑 發布:2024-09-17 01:57:29 瀏覽:688
兩個安卓手機照片怎麼同步 發布:2024-09-17 01:51:53 瀏覽:207
cf編譯後沒有黑框跳出來 發布:2024-09-17 01:46:54 瀏覽:249
安卓怎麼禁用應用讀取列表 發布:2024-09-17 01:46:45 瀏覽:524
win10設密碼在哪裡 發布:2024-09-17 01:33:32 瀏覽:662
情逢敵手迅雷下載ftp 發布:2024-09-17 01:32:35 瀏覽:337
安卓如何讓軟體按照步驟自動運行 發布:2024-09-17 01:28:27 瀏覽:197
Z包解壓命令 發布:2024-09-17 01:27:51 瀏覽:221