我正在创建TCP远程桌面广播应用程序的过程. (像团队查看器或VNC之类的东西) 服务器应用程序将 1. run on a PC listening for multiple clients on one Thread 2. and on another thread it will record the desktop every second 3. and it will broadcast the desktop for each connected client. 我需要使此应用程序成为可能,以在12kbps上传和50kbps下载DSL Connection(客户端和服务器)上运行. so ..我必须减小我每秒发送的数据/图像的大小. 我试图通过以下内容减少. I. first i send a Bitmap frame of the desktop and each other time i send only the difference of t
以下是关于 mpeg 的编程技术问答
任何人都可以简单地解释MPEG4如何压缩数据的方式.我对视频最感兴趣.我知道有不同的标准或零件.我只是在寻找主要的总体压缩方法,如果有mpeg4. 解决方案 MPEG-4是一个巨大的标准,并且采用许多技术来达到其能够的高压率. 通常,视频压缩涉及丢弃尽可能多的信息,同时对最终用户的观看体验产生最小的影响.例如,使用YUV代替RGB将视频尺寸切成一半.这是可能的,因为人眼对颜色不太敏感,而不是对亮度.在YUV中,Y值是亮度,U和V值代表颜色.因此,您可以丢弃一些降低文件大小的颜色信息,而不会注意到任何差异. 之后,大多数压缩技术尤其利用了2个冗余.第一个是时间冗余,第二个是空间冗余. 时间冗余指出,视频序列中的连续帧非常相似.通常,视频每秒的顺序为20-30帧,而一秒钟的1/30没有太大变化.取任何DVD并暂停它,然后将其移动在一个框架上,并注意2个图像的相似之处.因此,MPEG-4(和其他压缩标准)并没有独立编码每个帧,而仅编码连续帧之间的差异(使用运动估计找到
我正在尝试使用FFMPEG将视频从MP4格式转换为MPEG,以便我可以合并多个视频.我有一个自定义的ffmpeg构建,其中我控制配置选项: ffmpeg -y -i VID_20150514_171122_12085.mp4 -an -f mpeg VID_20150514_184208.mp4.0.mpg ffmpeg version git-2015-02-25-b0d3322 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (GCC) configuration: --arch=arm --cpu=cortex-a8 --target-os=linux --enable-runtime-cpudetect --enable-pic --disable-shared --enable-static --cross-prefix=/home/jon/Development/android-n
我正在使用openCV及其功能以" .mpeg"(而不是.avi)中的单独文件格式录制视频.尽管我根据其他Web参考更改了视频的编解码器和大小.但我也安装了FFMPEG.但是,对于每个编解码器的变化,我都会遇到相同的错误. [[openCV:ffmpeg:tag 0x314d4950/'pim1'不支持编码器ID 1和格式'mpeg/mpeg-1 systems/mpeg program stream' [mpeg1video @ 0x1dac700] mpeg1/2不支持10/1 fps 无法打开编解码器'mpeg1video':未指定错误]] \\writeVideo = new VideoWriter(videoFileName, CV_FOURCC('M','P','E','G') , 10, Size(640,480),true); . . . . strcat(newVideofilename," .mpeg"); 我希望以mpeg/mpg格式使用视频
我需要能够编程将MPEG-2文件传输到.mp4,.mp3,.wmv,.rm(可选)和.flv(可选),并希望也会生成缩略图.我找到了Java媒体框架,但坦率地说,它看起来很糟糕.这将运行Linux服务器,因此我可以使用Commons Exec向FFMPEG弹出 - FFMPEG是否可以做我需要做的一切? FFMPEG似乎很艰巨,这就是为什么我很难找到这些信息,但这似乎是一个全面的贸易.有什么建议吗? 解决方案 ffmpeg是最好和最简单的.输出/转换视频: ffmpeg -i {input}.ext -r {target_frame_rate} -ar {target_audio_rate} -b {target_bitrate} -s {width}x{height} {target}.ext 和您的屏幕截图: ffmpeg -i {input}.ext -r 1 -ss 00:00:04:005 -t 00:00:01 -an -s {width}x{heig
任何人都可以简单地解释MPEG4如何压缩数据的方式.我对视频最感兴趣.我知道有不同的标准或零件.我只是在寻找主要的总体压缩方法,如果有mpeg4. 解决方案 MPEG-4是一个巨大的标准,并且采用许多技术来达到其能够的高压率. 通常,视频压缩涉及丢弃尽可能多的信息,同时对最终用户的观看体验产生最小的影响.例如,使用YUV代替RGB将视频尺寸切成一半.这是可能的,因为人眼对颜色不太敏感,而不是对亮度.在YUV中,Y值是亮度,U和V值代表颜色.因此,您可以丢弃一些降低文件大小的颜色信息,而不会注意到任何差异. 之后,大多数压缩技术尤其利用了2个冗余.第一个是时间冗余,第二个是空间冗余. 时间冗余指出,视频序列中的连续帧非常相似.通常,视频每秒的顺序为20-30帧,而一秒钟的1/30没有太大变化.取任何DVD并暂停它,然后将其移动在一个框架上,并注意2个图像的相似之处.因此,MPEG-4(和其他压缩标准)并没有独立编码每个帧,而仅编码连续帧之间的差异(使用运动估计找到
是否可以加载.mpg文件并通过actionscript/flash? 播放它 该代码与MP4视频文件效果很好.如果无法播放MPG文件,那么使其工作的一种方法是转换这些文件? package { import flash.net.NetConnection; import flash.net.NetStream; import flash.events.AsyncErrorEvent; import flash.media.Video; import se.svt.caspar.template.CasparTemplate; public class data extends CasparTemplate { var nc:NetConnection; var ns:NetStream; var vid:Video; var textfield:TextField
我最近冒险处理音频和视频相关编码,我对它们俩的了解有限. 碰巧我有一个正在处理MPEG-2视频的项目.是否有可用的Python库来提取MPEG-2视频的持续时间? 解决方案 我不知道任何纯Python实现.但是也许OpenCV绑定对您有用: import cv cvcapture = cv.CaptureFromFile("movie.mpg") cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FRAME_COUNT) 否则,您可以使用pyffmpeg.当心:我的经验是,框架计数通常不是很准确. OpenCV 2.6运行良好,但是Ealier版本有时会提供垃圾. 编辑:啊,对不起,我的错误:这仅给您框架计数.在持续时间:将其乘以帧速率: cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FPS) 其他解决方案 除了OpenCV或FFMPEG之外,还有Gstr
我基本上具有字节矩阵.每个行(含义byte [])代表图像.如何从该电影中创建电影(任何格式-Avi,mpeg等)并将其保存为文件? 每个图像可以是以下之一: int JPEG Encoded formats. int NV16 YCbCr format, used for video. int NV21 YCrCb format used for images, which uses the NV21 encoding format. int RGB_565 RGB format used for pictures encoded as RGB_565. int YUY2 YCbCr format used for images, which uses YUYV (YUY2) encoding format. int YV12 Android YUV format: This format is exposed to software decoder
我有一个直接节目图,可以从网络流渲染mpeg2/4电影.当我通过手动连接引脚组装图形时,它不会渲染.但是,当我在GraphBuilder上调用渲染时,它会很好地呈现. 显然,我没有在GraphBuilder执行的图表中没有执行的设置步骤. 有什么办法可以在组装图时查看GraphBuilder的调试输出? 有没有办法倾倒工作图以查看如何将其放在一起? 其他关于揭开直接节目框中的奥秘的想法? 谢谢! -Z 解决方案 您可以观看使用GraphEdit创建的图,该图是DirectShow SDK的工具.在GraphEdit中,选择文件 - >连接到远程图... 要在列表中找到图形,您必须在运行对象表中注册它: void AddToRot( IUnknown *pUnkGraph, DWORD *pdwRegister ) { IMoniker* pMoniker; IRunningObjectTable* pROT; G
我对GSTREAMER没有太多的经验,我找不到在线弄清楚的东西. 我正在使用我陷入了管道上,那里有两个工作管道,我无法合并一起工作. 原始OpenSource的管道: "ahcsrc ! queue ! glimagesink name=vsink sync=false" (当AHCSRC代表Android-Hardware-Camera-SRC时) 和我的测试管道: "videotestsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234" 两个都很好. 我的目标是采用我的测试管道,然后将videotestsrc切换到AHCSRC,如: "ahcsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234"
我正在从事在线电视服务.目标之一是在没有任何其他浏览器插件的情况下播放视频(Flash除外). 我决定使用MP4,因为大多数HTML5浏览器和Flash(用于后备)支持它.视频由FFMPEG从服务器上的ASF转码. 但是,我发现MP4不能实时流程,因为它具有必须指定长度的元数据的MOOV原子. FFMPEG无法将MP4直接流到Stdout,因为它将MOOV放在文件的末尾. ( MP4的流在Android中起作用,但在Flash Player中使用NetStream.play.filestructureinvalid错误) 当然,MPEG-TS存在,但是HTML5 不支持. 我想到的是一种实时转码流的方法,并且在每个新的HTTP请求上,首先发送一个MOOV,该MOOV指定视频长度很长的数字,然后开始发送发送.其余的MP4文件. 是否可以使用MP4进行这种方式流? 经过一些研究和AV501的答案,我知道必须知道框架的尺寸,以便它可以正常工作.
所以我一直在尝试PHP的Fopen功能,并且在读取声音文件方面取得了很大的成功.现在,我正在尝试为Shoutcast流创建一种"继电器". file_get_contents可能是最糟糕的方法,因为数据是连续的. 使用PHP插座会产生更好的结果吗? tl; dr输出连续的音频/mpeg数据流的最佳方法是什么? 解决方案 过去,我已经使用PHP和喊叫流进行了此操作.当然是可能的,但请记住,您所有的PHP实例都将与您的shoutcast服务器建立单独的连接.如果您使用任何PHP Web托管,这些服务器通常以某种方式配置,使得不可能运行PHP脚本超过几分钟.为此,您需要自己的服务器来进行VPS(或合作托管提供商). 您是正确的,因为您将无法使用file_get_contents().根据您的Curl版本,您可能会摆脱使用它连接到Shoutcast Server的版本. http://php.net/manual/manual/en/book.curl.php 问
我正在开发智能电视应用程序,并从IP摄像头开发直播视频是功能的很大一部分. 该相机的手册指出,如果设置为不支持HTTP的MPEG-4或H.264;只有RTSP/RTP是. 替代方案(通过http)是运动jpeg,我想尽可能避免它(电视上可怕的帧速率). RTSP是否有任何JavaScript/HTML5解决方案/包装器?电视无法运行Java applet或类似的任何内容,默认情况下,浏览器不支持RTSP. 谢谢! 解决方案 似乎没有任何纯JS或HTML5解决方案.您可能需要浏览将转码视频的服务器. 另请参见: 其他解决方案 您可以在这里获得您需要的90%: https://github.com/specforge/specforge/html5_rtspssp_player 这将使HTML5客户端使用Web插座来从服务器隧穿的服务器接收数据. 其他10%将取决于您要在后端使用哪种技术.从服务器到客户端进行隧道. 我有一个项目 @ h
我可以使用此行创建MPG视频 ffmpeg -f image2 -i 100%03d0.png movie.mpg 但是,如果我尝试创建MP4视频,我将获得带有黑屏的视频. ffmpeg -f image2 -i 100%03d0.png movie.mp4 我带有数字的目录看起来像: 1000010.png,1000020.png,... 1001260.png 解决方案 添加-pix_fmt yuv420p应该解决问题: ffmpeg -i input_%03d.png -pix_fmt yuv420p movie.mp4 来自 ffmpeg wiki "默认使用libx264时,并取决于您的输入,ffmpeg 将尝试避免颜色子采样.从技术上讲,这是 首选,但不幸的是,几乎所有视频播放器都不包括 基于FFMPEG的玩家,许多在线视频服务仅支持 Yuv色彩空间,带有4:2:0色度子采样. 使用选项-pix_fmt yuv420p或-vf
此用例是一项服务,它可以手动编码一系列未压缩的.WAV媒体段,以通过MPEG-DASH广播,使用FFMPEG将.WAV压缩为.aac和sannies/mp4parser,以集中AAC AC AC AUDIO AUDIO进入.m4s媒体片段. 我创建了例如,这是自定义 使用MP4框的第一个示例可行,只要我能够生成初始化的MP4 +系列片段M4S 然后可以将可以连接的文件形成可播放的MPEG4流. 注意:对于此用例,每个媒体段都是从单独生成的源段编码的,而不是使用MP4Box之类的工具来从连续音频源进行流式传输. 尝试通过MP4Parser手动构建媒体段的尝试仍在整体上失败,,因为 my ChunkFragmentM4sBuilder.java 下面使用的畸形. 但是我很难理解 如何完全畸形. 对我有帮助 一面, mp4boxtestes.log.txtt . 通过Java Mp4Parser(畸形) 前 >日志是 from ChunkFragment
我正在编写MPEG-TS文件解析器,并且我坚持从PAT部分获取Program_numbers和PID.我正在使用数据包分析仪比较我的结果. 例如,这是一个PAT数据包 47 40 00 16 00 00 B0 31 00 14 D7 00 00 00 00 E0 10 00 01 E0 24 00 02 E0 25 00 03 E0 30 00 04 E0 31 00 1A E0 67 00 1C E0 6F 43 9D E3 F1 43 A3 E3 F7 43 AC E4 00 C3 69 A6 D8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF