導航:首頁 > 源碼編譯 > 調用mp4的程序並編譯

調用mp4的程序並編譯

發布時間:2022-06-19 14:17:49

『壹』 為什麼C語言一編譯就 不行 但我插上個MP4就可以了。。。。 為什麼啊 環境VC6.0

你的MP4裡面大概存了編譯用的庫之類的東西了,把VC卸載了以後下個其它版本的吧

『貳』 c語言程序設計MP3或MP4文件基本信息的解析

找了個MP3看了下,comment是29個位元組。
可參考 http://www.chineselinuxuniversity.net/articles/27374.shtml

拿VC的C語言寫了下:
頭文件:
#include <stdio.h>

// TODO: reference additional headers your program requires here

#define MP3_ID3_LENGTH 10
typedef struct tag_ID3_INFO
{

} ID3_INFO;

#define IDENTIFY_LEN 3
#define TITLE_LEN 30
#define ARTIST_LEN 30
#define ALBUM_LEN 30
#define YEAR_LEN 4
#define COMMENT_LEN 30
#define GENRE_LEN 1

// IDENTIFY_LEN + TITLE_LEN +...
#define MP3_INFO_LENGTH 128

typedef struct tag_MP3_INFO
{
char Identify[IDENTIFY_LEN + 1]; //TAG三個字母
//這里可以用來鑒別是不是文件信息內容
char Title[TITLE_LEN + 1]; //歌曲名,30個位元組
char Artist[ARTIST_LEN + 1]; //歌手名,30個位元組
char Album[ARTIST_LEN + 1]; //所屬唱片,30個位元組
char Year[YEAR_LEN + 1]; //年,4個位元組
char Comment[COMMENT_LEN + 1]; //注釋,28個位元組
char Genre[GENRE_LEN + 1]; //類型 ,1個位元組
} MP3_INFO;

C文件:
#include <string.h>

#define MP3_OK 1
#define MP3_ERROR 1

FILE *OpenMp3File(char *pFileName);
int ReadMP3Info(FILE *pFile, MP3_INFO *pstInfo);
int OutputMP3Info(MP3_INFO *pstMp3Info);

int main(int argc, char* argv[])
{
FILE *pFile = NULL;
MP3_INFO stMp3Info = {0};
char *pfname = "E:\\Project\\MP3\\test.MP3";

pFile = OpenMp3File(pfname);
if (NULL == pFile)
{
return MP3_ERROR;
}

ReadMP3Info(pFile, &stMp3Info);

printf("\r\nMP3 file: %s", pfname);
OutputMP3Info(&stMp3Info);

printf("Hello World!\n");
return MP3_OK;
}

FILE *OpenMp3File(char *pFileName)
{
FILE *pFile = NULL;
pFile = fopen(pFileName,"rb");
if (NULL==pFile)
{
printf("open read file error!!");
return NULL;
}

return pFile;
}

int ReadMP3Info(FILE *pFile, MP3_INFO *pstInfo)
{
int len = 0;
if ((NULL == pFile) || (NULL == pstInfo))
{
return MP3_ERROR;
}

fseek(pFile, 0, SEEK_END);
len = ftell(pFile);
if (len <= (MP3_INFO_LENGTH + MP3_ID3_LENGTH))
{
return MP3_ERROR;
}

memset(pstInfo, 0, sizeof(MP3_INFO));

fseek(pFile, -MP3_INFO_LENGTH, SEEK_END);
len = fread((char *)(pstInfo->Identify), 1, IDENTIFY_LEN, pFile);
len += fread((char *)(pstInfo->Title), 1, TITLE_LEN, pFile);
len += fread((char *)(pstInfo->Artist), 1, ARTIST_LEN, pFile);
len += fread((char *)(pstInfo->Album), 1, ALBUM_LEN, pFile);
len += fread((char *)(pstInfo->Year), 1, YEAR_LEN, pFile);
len += fread((char *)(pstInfo->Comment), 1, COMMENT_LEN, pFile);
len += fread((char *)(pstInfo->Genre), 1, GENRE_LEN, pFile);
if (MP3_INFO_LENGTH != len)
{
return MP3_ERROR;
}

return MP3_OK;
}

int OutputMP3Info(MP3_INFO *pstMp3Info)
{
printf("\r\nTag : %s", pstMp3Info->Identify);
printf("\r\nTitle : %s", pstMp3Info->Title);
printf("\r\nArtist : %s", pstMp3Info->Artist);
printf("\r\nAlbum : %s", pstMp3Info->Album);
printf("\r\nYear : %s", pstMp3Info->Year);
printf("\r\nComment: %s", pstMp3Info->Comment);

return MP3_OK;
}

測試:
MP3 file: E:\Project\MP3\test.MP3
Tag : TAG
Title : TrackTitle
Artist : ArtistName
Album : AlbumTitle
Year : 2012
Comment: This is a comment

『叄』 初學了一段時間java。想做一個應用程序,程序只需要播放一個本地視頻,MP4格式,求教怎麼做

使用javafx的Media,MediaPlayer,MediaView。代碼如下:

importjava.io.File;

importjavafx.application.Application;
importjavafx.beans.binding.Bindings;
importjavafx.beans.property.ReadOnlyProperty;
importjavafx.beans.value.ObservableValue;
importjavafx.event.ActionEvent;
importjavafx.geometry.Pos;
importjavafx.scene.Scene;
importjavafx.scene.control.Button;
importjavafx.scene.control.Menu;
importjavafx.scene.control.MenuBar;
importjavafx.scene.control.MenuItem;
importjavafx.scene.control.Slider;
importjavafx.scene.image.Image;
importjavafx.scene.image.ImageView;
importjavafx.scene.layout.BorderPane;
importjavafx.scene.layout.HBox;
importjavafx.scene.layout.Pane;
importjavafx.scene.layout.VBox;
importjavafx.scene.media.Media;
importjavafx.scene.media.MediaPlayer;
importjavafx.scene.media.MediaPlayer.Status;
importjavafx.scene.media.MediaView;
importjavafx.stage.FileChooser;
importjavafx.stage.FileChooser.ExtensionFilter;
importjavafx.stage.Stage;
importjavafx.util.Duration;

{

privateMediaViewmediaView;
privateSliderprocessSlider;

privatestaticfinalObjectAUTO=newObject(),MANUAL=newObject();

publicstaticvoidmain(String[]args){
launch(args);
}

@Override
publicvoidstart(StageprimaryStage)throwsException{
primaryStage.setTitle("javafx視頻播放器");

BorderPaneroot=newBorderPane();
//菜單欄
initMenu(root);
//視頻播放控制項
mediaView=initMediaView(root);
//視頻功能控制項
initMediaControllView(root);

primaryStage.setScene(newScene(root,600,400));
primaryStage.setOnCloseRequest(event->System.exit(0));
primaryStage.show();
}

privateMenuBarinitMenu(finalBorderPaneparent){
Menumenu=newMenu("菜單");
MenuItemitem=newMenuItem("打開");
item.setOnAction(event->{
FileChooserchooser=newFileChooser();
chooser.setTitle("選擇視頻文件");
chooser.getExtensionFilters().add(newExtensionFilter("視頻文件","*.mp4","*.flv"));
Filefile=chooser.showOpenDialog(parent.getScene().getWindow());
if(file!=null){
MediaPlayerplayer=mediaView.getMediaPlayer();
//關閉當前的player
if(player!=null){
player.stop();
player.dispose();
}
processSlider.setValue(0);
//創建一個新的player並自動播放
player=newMediaPlayer(newMedia(file.toURI().toString()));
player.currentTimeProperty().addListener(this::mediaProcessChanged);
player.setAutoPlay(true);
mediaView.setMediaPlayer(player);
}
});
menu.getItems().add(item);

item=newMenuItem("退出");
item.setOnAction(event->parent.getScene().getWindow().hide());
menu.getItems().add(item);

MenuBarmenuBar=newMenuBar(menu);
parent.setTop(menuBar);
returnmenuBar;
}

privateMediaViewinitMediaView(finalBorderPaneparent){
MediaViewview=newMediaView();
Panepane=newPane(view);
parent.setCenter(pane);
//視頻寬高可隨著窗口變化而自動縮放
view.fitWidthProperty().bind(Bindings.selectDouble(view.parentProperty(),"width"));
view.fitHeightProperty().bind(Bindings.selectDouble(view.parentProperty(),"height"));
view.setPreserveRatio(true);

returnview;
}

(finalBorderPaneparent){
VBoxbottom=newVBox(10);
bottom.setAlignment(Pos.CENTER);
parent.setBottom(bottom);

Sliderslider=newSlider(0,100,0);
slider.valueProperty().addListener(this::processSliderChanged);
// slider.setOnMouseClicked(this::processSliderClicked);
bottom.getChildren().add(slider);
processSlider=slider;

HBoxhbox=newHBox(10);
bottom.getChildren().add(hbox);
hbox.setAlignment(Pos.CENTER);
Buttonbtn=newButton(null,newImageView(loadImage("pause.png")));
btn.setOnAction(this::pauseOrPlay);
hbox.getChildren().add(btn);

btn=newButton(null,newImageView(loadImage("stop.png")));
btn.setOnAction(this::stopPlay);
hbox.getChildren().add(btn);
}

privatestaticImageloadImage(StringresPath){
returnnewImage(Thread.currentThread().getContextClassLoader().getResourceAsStream(resPath));
}

privatevoidpauseOrPlay(ActionEventevent){
MediaPlayerplayer=mediaView.getMediaPlayer();
if(player==null){
return;
}
Statusstatus=player.getStatus();
if(status==Status.READY||status==Status.PAUSED){
player.play();
((Button)event.getTarget()).setGraphic(newImageView(loadImage("pause.png")));
}elseif(status==Status.PLAYING){
player.pause();
((Button)event.getTarget()).setGraphic(newImageView(loadImage("play.png")));
}
}

privatevoidstopPlay(ActionEventevent){
MediaPlayerplayer=mediaView.getMediaPlayer();
if(player==null){
return;
}
player.stop();
}

// (MouseEventevent){
// Sliderslider=(Slider)event.getSource();
// if(mediaView.getMediaPlayer()!=null){
// Durationd=mediaView.getMediaPlayer().getTotalDuration().multiply(slider.getValue()/slider.getMax());
// mediaView.getMediaPlayer().seek(d);
// }
// }

(ObservableValue<?extendsNumber>observable,NumberoldValue,NumbernewValue){
Sliderslider=(Slider)((ReadOnlyProperty<?extendsNumber>)observable).getBean();
if(slider.getUserData()==AUTO){//進度條是自動改變的,因此不用設置播放器
slider.setUserData(null);
return;
}
if(mediaView.getMediaPlayer()!=null){
slider.setUserData(MANUAL);
Durationd=mediaView.getMediaPlayer().getTotalDuration().multiply(newValue.doubleValue()/slider.getMax());
mediaView.getMediaPlayer().seek(d);
}
}

(ObservableValue<?extendsDuration>observable,DurationoldValue,DurationnewValue){
if(processSlider.getUserData()==MANUAL){//手動點擊進度條
processSlider.setUserData(null);
return;
}
MediaPlayerplayer=(MediaPlayer)((ReadOnlyProperty<?extendsDuration>)observable).getBean();
processSlider.setUserData(AUTO);
processSlider.setValue(newValue.toMillis()/player.getTotalDuration().toMillis()*100);
}

}

『肆』 C語言編寫一個簡單的視頻播放器可以播放mp4的就好

C語言編寫?windows系統下的還是linux系統下的?
不管有多簡單,沒有幾千行代碼是無法實現的。
首先你要會在屏幕上顯示圖形,這個是顯示視頻時需要的,顯示是最終結果,過程是解碼MP4格式的文件,從中獲取每一幀的圖像數據,並將這些數據顯示在屏幕上。
其次,你要會讓音頻設備播放音頻,視頻中有聲音的,需要播放。音頻也要從mp4格式文件中解碼出來,用C語言控制音頻設備,將解碼出來的音頻數據輸出至音頻設備。
總之,用C語言實現這些需要很多精力的,因為這需要與底層打交道,與硬體打交道。
有一款開源的播放器,它叫MPlayer,可以播放很多格式的視頻,包括mp4,有興趣的話,可以解剖它的源代碼,修改成你想要的代碼,編譯成你想要的播放器。

『伍』 MP430單片機用什麼編譯器啊

常用的就是IAR了。。。。。現在貌似出到V5.5版本了 官網可以下載,注冊機網上去找。

『陸』 VB可以做MP4播放器么

有能力的話,可以的,先要知道如何解碼MP4文件,解碼出每一幀的圖像,之後,繪制到窗口裡,並且,同時要解碼出音頻,並輸出至音頻設備供播放。
界面上要有按鈕,控制視頻播放的繼續、暫停和停止。
播放時,需要獲取視頻播放進度,可以用滑鼠拖動滑塊,在對應的位置播放視頻。

這是程序基本原理,你會VB的話,就用代碼把這些原理描述出來,之後編譯成程序。

『柒』 怎麼把mp4文件放進studio項目

1、下載mp4v2源碼,mp4v2編譯需要源碼。
2、源碼放入studio工程目錄。
3、MP4就可以直接導入,在素材庫里點右鍵添加視頻即可。

『捌』 怎麼把MP4格式的視頻轉換為文件媒體程序的視頻,用什麼軟體怎麼轉換

轉換視頻的話你可以下載個「狸萵轉換器。轉換方法很簡單,添加文件進去,預制方案那選擇格式,設置好保存目錄後開始轉換。
復制文件到移動設備上的話你可以先看下你的設備支持什麼格式後轉換。

『玖』 請問MP4是什麼文件格式,用什麼播放器,它的下載地址(可否用解霸之類),及格式轉換是怎麼回事多謝,

Kmplayer 2.9.2.1100 Build 1104 漢化版[推薦]

軟體簡介:

來自韓國的影音全能播放器,與Mplayer一樣從linux平台移植而來的Kmplayer(簡稱KMP)幾乎可以播放您系統上所有的影音文件。通過各種插件擴展KMP可以支持層出不窮的新格式。強大的插件功能,直接從Winamp繼承的插件功能,能夠直接使用winamp的音頻 ,輸入,視覺效果插件,而通過獨有的擴展能力,只要你喜歡,可以選擇使用不同解碼器對各種格式進行解碼。

功能超強的KMPlayer,一套含括所有解碼程式

KMPlayer是一套將網路上所有能見得到的解碼程式(Codec)全部收集於一身的影音播放軟體;只要安裝了它,你不用再另外安裝一大堆轉碼程式,就能夠順利觀賞所有特殊格式的影片了。除此之外,KMPlayer還能夠播放DVD與VCD、匯入多種格式的外掛字幕檔、使用普及率最高的WinAMP音效外掛與支援超多種影片效果調整選項等,功能非常強大!

你是否有過在網路上下載回來的影片卻無法順利播放的經驗?這是因為網路上的影片為求盡可能的瘦身,通常採用了壓縮比極高式(Codec)才能觀看,而轉碼程式又分很多種類,若是要一個個尋找還真是麻煩! 若是你也遇上了上述的問題,趕緊來試試KMPlayer吧!它是一套將網路上所有能見得到的解碼程式(Codec)全部收集於一身的影音播放軟體。只要安裝了它,你不用再另外安裝一大堆轉碼程式,就能夠順利觀賞所有特殊格式的影片了,讓你省下每次觀賞影片就要上網到處找尋各種Codec的麻煩!

除了內建了各種Codec以外,KMPlayer還擁有很多優異的功能;像是能夠播放DVD與VCD、佔用系統資源極小、支援多國語系、可以外掛多種格式的字幕檔、可以使用普及率最高的WinAMP音效外掛程式來增強聲音品質、支援超多種影片效果調整選項、內建一堆超炫的主題介面模組等等,更重要的是它是完全免費的呢!

它支持 Winamp 2/5 的輸入、常規、DSP、視覺效果、媒體庫插件。無須注冊表支持直接調用 Directshow 濾鏡!FFdshow 的視覺特效系統~超強的 GUI 界面~安裝電視卡後可以直接代替原軟體直接收看電視~支持播放 DVD/VCD 以及絕大多數電腦的媒體文件(AVI 支持 Xvid/DivX/3vid/H264 OGG/OGM/MKV 容器/AC3/DTS 解碼~Monkey Audio 解碼~)強烈推薦!此播放器除了會將自己的配置信息寫入注冊表外絕對綠色~

本版本帶有完整的 Real 解碼器!支持 Web ActiveX 形式的播放和 RTSP 流協議支持。
警告!請不要嘗試解包本軟體!那樣會丟失 Kmplayer 對 Realmedia 的所有支持!和預配置的解碼濾鏡的調用!

注意本漢化版本附帶的 DFX 音效處理插件默認為關閉狀態。您需要在參數設置中的插件項目中的音頻 DSP 中開啟。

1104 漢化版本更新:
*升級 Cyberlink Audio Decoder 為 6.0.0.3403 版本(已漢化)。
*升級 Haali 分離器為 29/10/2006 版本(已漢化)。
*增加樂辭歌詞插件(默認不安裝)。
*修正了 DFX 注冊向導。
*默認狀態下現在將不安裝 AVS Player。它可能會導致某些電視卡的接收軟體或驅動程序出現異常。

1104 原版更新:
*添加了一個重新調節 KMP 對話框大小的功能。
*添加了個修改 KMP 對話框字體顏色的功能。
*在主菜單中現在可以直接調節色調和伽瑪值。
*為電視輸出添加了打開字幕對話框。
*修正了一個 bug。"無法創建圖像編譯器"。
*現在內部分離器支持媒體中包含的多重視頻流。
*其它許多。
http://soft.mumayi.net/Download.asp?ID=4477&sID=0

『拾』 怎樣重新編寫MP4自身程序

mp4程序是用嵌入式方法寫入的一般人恐怕改不了。。他說的程序大概是指驅動之類的軟體把

閱讀全文

與調用mp4的程序並編譯相關的資料

熱點內容
圖論與java 瀏覽:575
程序員寫代碼告白初音 瀏覽:738
sshpdf 瀏覽:539
windows調用linux 瀏覽:594
如何查找本地伺服器名稱 瀏覽:819
linux文件只讀屬性 瀏覽:585
VNAS技術加密 瀏覽:131
python編程電話費計算話費 瀏覽:462
c編譯文件怎麼改名 瀏覽:626
pdf轉格式軟體 瀏覽:875
單片機原理及應用第二版第八章答案 瀏覽:536
伺服器一百個節點相當於什麼 瀏覽:344
綏化電氣編程培訓 瀏覽:374
輕量應用伺服器怎麼添加軟體上去 瀏覽:813
資產管理pdf 瀏覽:170
製冷壓縮機熱負荷過低 瀏覽:363
伺服器出現兩個IPV4地址 瀏覽:848
宜興雲存儲伺服器 瀏覽:221
如何開放遠程伺服器上的埠號 瀏覽:71
大規模單片機廠家供應 瀏覽:956