当管道mpegts到ffmpeg,它应该将其转换为mp4并管道转换为stdout时,ffmpeg说:"muxer不支持非可搜索输出".
经过大量的研究后,我得出的结论是mp4是一种不好的选择,可以通过搜索来进行各种动态转码.所以从本质上说:MP4不能通过ffmpeg进行管道传输,这是有道理的.
但我没有连续的mpegts流,我有5秒钟的块.所以它真的就像:
我需要这些用于HTML5 MediaSource的mp4块,碎片没有问题,我使用mp4box.js,它就像一个魅力.
问题:
本质上:我可以(不知何故)与ffmpeg交互而不使用文件吗?我目前的解决方案适用于文件和轮询新的块,这是丑陋的.
如果您对我的ffmpeg命令感兴趣,请告诉我.
我正在尝试为客户端设置一个简单的移动页面,其中包含指向.mp4视频文件的链接.Lke so:
<a href="My_Video_File.mp4" target="_blank">Watch MP4 Video</a>
Run Code Online (Sandbox Code Playgroud)
然后我显然已经正确地获取了我的视频文件,并且.mp4具有以下特征:
Dimension: 480 * 272
Codecs: AAC, H.264, MPEG-4 SDSM, MPEG-4 ODSM
Channel Count: 2
Total Bitrate: 991
Size: 11.4MB
Run Code Online (Sandbox Code Playgroud)
但是,问题是当我点击链接iPhone时说"电影无法播放".并没有告诉我为什么.
有帮助吗?
提前致谢.
我一直在使用基于闪存的JWPlayer 4和播放列表选项.最近我升级到JWPlayer 5,声称支持HTML5.播放器本身在支持HTML5但不支持闪存的移动设备上很好地降级,但是它会在启用播放列表选项时中断.
那么有人可以告诉我我在JWPlayer 5上做错了什么以及如何使用移动设备的播放列表选项,或者只是教我一个更好的方法来设置HTML5的视频和播放列表?
资源
JWPlayer和播放列表布局的示例:
screenshot-with-shadow.jpg http://img198.imageshack.us/img198/5788/screenshotwithshadow.jpg
我一直在尝试将.mov文件转换为.mp4文件一段时间,我认为这是正确的代码.
ffmpeg -i P1010989.MOV -vcodec copy -acodec copy out.mp4
Run Code Online (Sandbox Code Playgroud)
但这是我的输出
FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
built on Jan 29 2012 23:55:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-51)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab
libavutil 50.15. 1 / 50.15. 1
libavcodec 52.72. 2 / …Run Code Online (Sandbox Code Playgroud) 我正在开展一个我需要的项目
读取来自IPCamera的输入H.264编码流 - 我可以通过rtsp://192.168.1.83:8001/rtsp url获取此信息
显示IPCamera流 - 我可以使用
final VideoView vv = (VideoView) findViewById(R.id.video_view_h264);
MediaController mc = new MediaController(getApplicationContext());
vv.setVideoURI(video);
vv.setMediaController(mc);
vv.requestFocus();
vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
vv.start();
}
});
Run Code Online (Sandbox Code Playgroud)
a)MediaRecorder - 根据我的谷歌搜索,我相信这个类的输入只能来自设备相机.有没有办法调整这个我可以提供rtsp流的输入?
b)MediaCodec API - 4.1以后Android已经发布了这个低级API以及MediaExtractor和MediaCodec.对于此选项,我认为rtsp流不能用于以下代码段
final String STREAM_URL = "rtsp://192.168.1.83:8001/";
MediaExtractor mediaExtractor = new MediaExtractor();
mediaExtractor.setDataSource(STREAM_URL); // I get an exception 04-28 18:30:18.914: E/AndroidRuntime(8140): Caused by: java.io.IOException: Failed to instantiate extractor.
Run Code Online (Sandbox Code Playgroud)
c)我可以从网址读取并将其存储为文件.如何将此流转换为MP4文件?任何代码段都非常有用.
我也试过使用FFMPEG,但性能太差,我放弃了这个选项.
我非常感谢上述三个选项的任何输入或我可以考虑的任何其他附加选项.
谢谢 !!
我有一个奇怪的要求.用户可以上传任何格式(或有限格式)的视频.我们必须存储它们并将它们转换为.mp4格式,以便我们可以在我们的网站中播放它.
音频文件的要求也相同.
我用谷歌搜索,但我无法得到任何正确的想法.任何帮助或建议.... ??
提前致谢
我Camera使用MediaCodecmime-type"video/avc" 编码预览数据,并将编码数据(仅限视频,无音频)传递给MediaMuxer.复用器似乎运行正常并创建一个合理大小的输出文件(即,我记录的时间越长,越大).但是,当我尝试停止复用器时,我得到"无法停止复用器"错误:
10-21 10:39:40.755: E/AndroidRuntime(2166): Caused by: java.lang.IllegalStateException: Failed to stop the muxer
Run Code Online (Sandbox Code Playgroud)
在失败的停止之前有一些可疑的MPEG4Writer日志消息:
10-21 10:39:40.740: D/MPEG4Writer(2166): Stopping Video track
10-21 10:39:40.740: E/MPEG4Writer(2166): Missing codec specific data
10-21 10:39:40.740: W/MPEG4Writer(2166): 0-duration samples found: 122
10-21 10:39:40.740: I/MPEG4Writer(2166): Received total/0-length (123/1) buffers and encoded 123 frames. - video
10-21 10:39:40.740: D/MPEG4Writer(2166): Stopping Video track source
10-21 10:39:40.740: D/MPEG4Writer(2166): Video track stopped
10-21 10:39:40.740: D/MPEG4Writer(2166): Stopping writer thread
10-21 10:39:40.740: D/MPEG4Writer(2166): 0 chunks are written in …Run Code Online (Sandbox Code Playgroud) 我有这个代码在html5页面播放视频:
<video autoplay loop id="bgvid">
<source src="video-background.mp4" poster="/poster.png" type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)
问题是它不适用于移动Chrome(Android手机)和手机游戏(iPhone).但它适用于桌面上的"每个"浏览器(使用Safari,Chrome,Firefox测试)以及移动版Firefox(Android手机).
我该如何克服这个问题?
编辑: 添加此代码:
var myVideo = document.getElementById("bgvid");
function playVid() {
myVideo.play();
}
function pauseVid() {
myVideo.pause();
}
Run Code Online (Sandbox Code Playgroud)
如果我添加一个触发函数playVid()的按钮就可以了.所以我认为问题在于自动播放.我试图用load事件触发函数,但它不起作用.
是否可以将pcm音频文件存储到.mp4文件中?
我用的ffmpeg命令"的ffmpeg -i tempA.wav -acodec副本temp.mp4的",但无法将其存储在MP4容器文件.
输入#0,wav,来自'tempA.wav':
持续时间:00:01:36.51,比特率:128 kb/s
Run Code Online (Sandbox Code Playgroud)Stream #0.0: Audio: pcm_s16le, 8000 Hz, 1 channels, s16, 128 kb/s[mp4 @ 0x7d70e0] Tag [1] [0] [0] [0]/0x00000001与输出编解码器ID"65536"不兼容
输出#0,mp4,到'temp.mp4':
Run Code Online (Sandbox Code Playgroud)Stream #0.0: Audio: pcm_s16le, 8000 Hz, 1 channels, 128 kb/s流映射:
流#0.0 - >#0.0
无法为输出文件#0写入标头(编解码器参数不正确?)
凡在转换为.AVI(ffmpeg的-i tempA.wav -acodec副本temp.avi).MOV(ffmpeg的-i tempA.wav -acodec副本temp.mov)文件格式工作完全正常.
我需要通过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之间做出选择,你能解释一下原因吗?