标签: mp4

是否有用于mp4文件的Java API?

可以使用这个mp3 SPI支持处理Mp3文件,但我找不到类似于mp4文件的东西.

任何帮助,将不胜感激.

--update

我想要做的是获取文件的大小,就像使用此代码处理wave文件一样:

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long audioFileLength = file.length();
int frameSize = format.getFrameSize();
float frameRate = format.getFrameRate();
float durationInSeconds = (audioFileLength / (frameSize * frameRate));
Run Code Online (Sandbox Code Playgroud)

- 回答

以下是使用@mdma(IBM工具包)提示的答案代码:

/**
 * Use IBMPlayerForMpeg4SDK to get mp4 file duration.
 * 
 * @return the mp4File duration in milliseconds.
 */
public static long getMp4Duration(File mp4File) throws IllegalStateException, IOException {
PlayerControl playerControl = PlayerFactory.createLightweightMPEG4Player();
playerControl.open(mp4File.getAbsolutePath());
long mili = playerControl.getDuration();
// int sec = (int) ((mili …
Run Code Online (Sandbox Code Playgroud)

java audio file-io mp4

10
推荐指数
2
解决办法
4万
查看次数

通过UDP流式传输h.264编码视频

我不太了解h.264,但问题是我在h.264中有一个mp4容器中的这个视频,我想通过UDP流.

我的问题很简单,在对视频进行编码时是否可以进行任何调整,以便它能够相当容忍某些"轻"数据包丢失?

我知道压缩视频通常每N帧有一个关键帧,然后在它们之间只发送增量.我可以想象h.264应该比那复杂得多,所以它可能不是那么简单.

更确切地说,我一直在进行一些实验,并意识到只需从视频流中删除1024个字节,我就会从丢失和开启的角度将其完全"无法播放".

我想要的是它能够容忍这样的光损失,这可能吗?

谢谢

纳尔逊

video mp4 udp video-streaming h.264

10
推荐指数
1
解决办法
6503
查看次数

MP4/ISO 14496-12:您如何找到视频和音频访问单元?

我正在编写一个检查MP4文件的工具(又名ISO基础媒体文件格式,ISO 14496第12部分).

我可以解释ISO 14496-12中列出的大多数由OSS生成的框.我还没有弄清楚如何提取单个视频访问单元和音频访问单元.

我有理由相信'mdat'框中的H.264视频在NAL单元上没有ISO 14496-10附录B"0x000001"前缀.

我已经尝试解释SampleToChunkBox('stsc'),SampleSizeBox('stsz')和ChunkOffsetBox('stco')来定位'mdat'中的媒体样本,但我似乎无法找到任何我能解释的内容作为nal_unit()(ISO 14496-10第7.3.1节)或slice_header()(第7.3.3节).

我也很好奇SPS(7.3.2.1)和PPS(7.3.2.2)的存在.我怀疑这些人住在'trak'盒子里面的某个地方,但我还没弄明白哪里.

应用程序或库的指针实用性有限.我正在编写一个应用程序,与数学解释相比,外部源代码更难理解(受其自身框架的阻碍).

mp4 h.264

10
推荐指数
1
解决办法
4948
查看次数

可以配置MIME类型的Github Pages文件吗?

我们在Github Pages存储库中有一个MP4视频文件.该文件的MIME类型为application/octet-stream,这意味着Internet Explorer不喜欢它.它应该作为类型video/mp4.有没有办法配置Github页面使用正确的MIME类型,或者我们应该找到视频的备用托管解决方案?帮助页面中未涉及此主题.

mp4 html5-video mime-types github-pages

10
推荐指数
2
解决办法
2255
查看次数

通过rails到Ipad提供mp4文件的正确方法是什么?

我们在使用默认的rails 3应用程序在ipad上播放mp4时遇到问题.在Chrome和桌面上的其他浏览器中查看路径时,可以正确提供mp4.

这是我们的代码:

file_path = File.join(Rails.root, 'test.mp4')
send_file(file_path, :disposition => "inline", :type => "video/mp4")
Run Code Online (Sandbox Code Playgroud)

我们点击0.0.0.0:3000/video/test.mp4观看视频,并在ipad上显示无法播放图标.我们已经尝试修改各种标题"Content-Length","Content-Range"等,但它们似乎不会影响最终结果.

我们也尝试过在某种程度上使用send_data

File.open(file_path, "r") do |f|
    send_data f.read, :type => "video/mp4"
end 
Run Code Online (Sandbox Code Playgroud)

在Ipad上查看时,同一视频在公共文件夹中正常运行.

通过rails到Ipad提供mp4文件的正确方法是什么?

mp4 ruby-on-rails ipad

10
推荐指数
1
解决办法
4622
查看次数

无法将pcm音频存储在.mp4容器文件中

是否可以将pcm音频文件存储到.mp4文件中?

我用的ffmpeg命令"的ffmpeg -i tempA.wav -acodec副本temp.mp4的",但无法将其存储在MP4容器文件.

输入#0,wav,来自'tempA.wav':

持续时间:00:01:36.51,比特率:128 kb/s

Stream #0.0: Audio: pcm_s16le, 8000 Hz, 1 channels, s16, 128 kb/s
Run Code Online (Sandbox Code Playgroud)

[mp4 @ 0x7d70e0] Tag [1] [0] [0] [0]/0x00000001与输出编解码器ID"65536"不兼容

输出#0,mp4,到'temp.mp4':

Stream #0.0: Audio: pcm_s16le, 8000 Hz, 1 channels, 128 kb/s
Run Code Online (Sandbox Code Playgroud)

流映射:

流#0.0 - >#0.0

无法为输出文件#0写入标头(编解码器参数不正确?)

凡在转换为.AVI(ffmpeg的-i tempA.wav -acodec副本temp.avi).MOV(ffmpeg的-i tempA.wav -acodec副本temp.mov)文件格式工作完全正常.

audio mp4 containers ffmpeg libavformat

10
推荐指数
1
解决办法
8340
查看次数

如何通过gstreamer将RTSP视频流保存到MP4文件?

我需要通过RTSP从我的相机获取视频流并将其保存到文件中.所有这些都需要通过gstreamer来完成.

经过一些谷歌搜索,我尝试了以下内容:

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! avdec_h264 ! mp4mux ! filesink location=result3.mp4
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:"错误的管道:无法将avdec_h264-0链接到mp4mux0"

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! h264parse ! mp4mux ! filesink location=result3.mp4
Run Code Online (Sandbox Code Playgroud)

它开始工作,但结果文件无法通过VLC播放.

什么是正确的命令?如果你在h264parse和avdec_h264之间做出选择,你能解释一下原因吗?

video mp4 rtsp video-streaming gstreamer

10
推荐指数
3
解决办法
2万
查看次数

如何使用视频标签在.html网页中嵌入.h264视频文件

我正在尝试在浏览器中播放.h264文件,尝试使用html视频标记来完成此操作.结果始终是空框架.

我确实在网上检查了一些链接,他们建议在.mp4容器中播放视频.

有人可以帮我完成这个吗?

更新的代码:

<video width="560" height="340" preload controls>

  <source src="hh.h264" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
  	<!--<source src="hh.mov" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
	<source src="hh.ogv" type='video/ogg; codecs="theora, vorbis"' />
	<source src="hh.webm" type='video/webm; codecs="vp8, vorbis"' />-->



</video>
Run Code Online (Sandbox Code Playgroud)

参考文献:

我如何播放H264视频?

播放.h264文件网络播放器

http://www.htmlgoodies.com/html5/client/how-to-embed-video-using-html5.html#fbid=6u-u00TH7Je

html5 mp4 video-streaming h.264 html5-video

10
推荐指数
1
解决办法
3万
查看次数

webRTC使用ffmpeg.js将webm转换为mp4

我试图用ffmpeg.js将webM文件转换为mp4.我正在从画布(带有一些信息的覆盖层)录制视频并录制视频中的音频数据.

stream = new MediaStream();
var videoElem = document.getElementById('video');
var videoStream = videoElem.captureStream();
stream.addTrack(videoStream.getAudioTracks()[0]);
stream.addTrack(canvas.captureStream().getVideoTracks()[0]);
var options = {mimeType: 'video/webm'};
  recordedBlobs = [];
  mediaRecorder = new MediaRecorder(stream, options);
  mediaRecorder.onstop = handleStop;
  mediaRecorder.ondataavailable = handleDataAvailable;
  mediaRecorder.start(100); // collect 100ms of data

function handleDataAvailable(event) {
  if (event.data && event.data.size > 0) {
    recordedBlobs.push(event.data);
  }
}
mediaRecorder.stop();
Run Code Online (Sandbox Code Playgroud)

此代码按预期工作并返回webm视频

var blob = new Blob(recordedBlobs, {type: 'video/webm'});
Run Code Online (Sandbox Code Playgroud)

现在我想要一个mp4文件并检查muaz-khan 的ffmpeg.js.这些示例展示了当您有2个单一流(音频和视频)时如何转换为mp4.但我有一个带有附加音轨的流.我可以将这样的流转换为mp4吗?怎么办?

mp4 ffmpeg mediarecorder webrtc mediastream

10
推荐指数
1
解决办法
7358
查看次数

FFMPEG 的 xstack 命令导致声音不同步,是否可以在单一编码中混合音频?

我编写了一个生成 xstack 复杂过滤器命令的 python 脚本。视频输入是此处描述的几种格式的混合:

我生成了 2 个命令,一个用于 xstack 过滤器,一个用于音频混合。

这是堆栈命令:(抱歉,文本没有换行!)

'c:/ydl/ffmpeg.exe',
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-filter_complex',
'[0]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf0];[rsclbf0]fps=24[rscl0];[1]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf1];[rsclbf1]fps=24[rscl1];[2]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf2];[rsclbf2]fps=24[rscl2];[3]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf3];[rsclbf3]fps=24[rscl3];[4]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf4];[rsclbf4]fps=24[rscl4];[5]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf5];[rsclbf5]fps=24[rscl5];[6]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf6];[rsclbf6]fps=24[rscl6];[7]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf7];[rsclbf7]fps=24[rscl7];[8]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf8];[rsclbf8]fps=24[rscl8];[9]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf9];[rsclbf9]fps=24[rscl9];[10]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf10];[rsclbf10]fps=24[rscl10];[11]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf11];[rsclbf11]fps=24[rscl11];[12]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf12];[rsclbf12]fps=24[rscl12];[13]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf13];[rsclbf13]fps=24[rscl13];[14]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf14];[rsclbf14]fps=24[rscl14];[rscl0][rscl1][rscl2][rscl3][rscl4]concat=n=5[cct0];[rscl5][rscl6][rscl7]concat=n=3[cct1];[rscl8][rscl9][rscl10]concat=n=3[cct2];[rscl11][rscl12][rscl13][rscl14]concat=n=4[cct3];[cct0][cct1][cct2][cct3]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0',
'output.mp4',
Run Code Online (Sandbox Code Playgroud)

这是 mix_audio 命令:

'c:/ydl/ffmpeg.exe',
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4' …
Run Code Online (Sandbox Code Playgroud)

python audio video mp4 ffmpeg

10
推荐指数
1
解决办法
321
查看次数