导航:首页 > 源码编译 > 调用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的程序并编译相关的资料

热点内容
华为方舟编译器和miui 浏览:475
matlab与python接口 浏览:836
怎么看加密市场 浏览:225
linux进程间通信管道 浏览:551
外圆圆弧槽左右切削怎么编程 浏览:380
做解压的实验 浏览:687
多人伪服务器怎么开荒 浏览:604
中兴交换机端口打开命令 浏览:970
编译原理vn集合 浏览:6
用暴风雨射击解压 浏览:784
linux上传git 浏览:728
查看主机路由器的两条命令 浏览:737
安卓怎么查看抖音号注册了多久 浏览:64
php循环优化 浏览:628
解压音乐俱乐部 浏览:112
微信公众号如何绑服务器 浏览:615
怎么下载两个拼多多app 浏览:314
su插件压缩包怎么安装 浏览:547
我的世界神奇宝贝服务器如何快速发育 浏览:668
信源编译码作用 浏览:742