我今天一直在搜索C#库,这将允许我创建H.264编码的视频文件.有谁知道是否存在任何此类库或第三方组件?
我正在尝试从我们的服务器在Android设备上播放电影.它不是媒体服务器,只是常规的Apache服务器.我们使用相同的API访问iPhone上的视频,它工作正常.
在Android设备上,某些视频有效,有些则无效.它们都以相同的方式创建,除了大多数不工作的都由静止图像和音频组成.
我们尝试用Videora重新编码它们,并尝试用MP4Box暗示它们.存储在SD卡上时,所有视频播放都非常精细.我们还尝试首先将视频从服务器下载到SD卡,将其保存为文件,然后从文件中播放,但这也不起作用.
帮助会很棒.我非常困惑.谢谢.
编辑 - Logcat:
01-19 08:19:12.669: DEBUG/MediaPlayer(1878): Couldn't open file on client side, trying server side
01-19 08:19:14.119: INFO/ActivityManager(1172): Displayed activity com.myproject/.VideoClass: 1966 ms (total 1966 ms)
01-19 08:19:15.779: ERROR/PlayerDriver(1071): Command PLAYER_INIT completed with an error or info UNKNOWN PVMFStatus
01-19 08:19:15.789: ERROR/MediaPlayer(1878): error (200, -32)
01-19 08:19:15.789: ERROR/MediaPlayer(1878): Error (200,-32)
01-19 08:19:15.789: DEBUG/VideoView(1878): Error: 200,-32
01-19 08:19:15.849: WARN/PlayerDriver(1071): PVMFInfoErrorHandlingComplete
Run Code Online (Sandbox Code Playgroud)
更新:这里是三个不同视频的视频分析的pastebin.来自服务器的app上的第一个流.第二个视频不会流式传输,但可以下载然后从设备播放.第三个既不能流式播放也不能下载播放. http://pastebin.com/9qChSkFz
WTF.
我有一个C程序,它生成一系列图像,我想把它们变成一个应该实时流式传输或存储在文件中的视频.在阅读ffmpeg文档时,我偶然发现ffmpeg可以从命名管道获取输入.
我的问题是管道中的文件应该采用何种格式,以及如何将文件输入管道.
我在远程管理玩具项目中工作.现在,我可以使用Robot该类捕获屏幕截图并控制鼠标.截图是BufferedImage实例.
首先,我的要求: - 只有服务器和客户端. - 性能很重要,因为客户端可能是Android应用程序.
我想过打开两个套接字连接,一个用于鼠标和系统命令,另一个用于视频输入.
如何将屏幕截图转换为视频流?我应该将它们转换为已知的视频格式,还是可以发送一系列序列化图像?
压缩是另一个问题.根据我的初步测试,以全分辨率发送屏幕捕获将导致低帧速率.我认为我需要至少24 fps来感知运动,所以我要同时缩小和压缩.我可以转换BufferedImages为jpg文件,然后设置压缩率,但我不想将文件存储在磁盘上,它们应该只存在于RAM中.另一种可能性是将实例(表示未压缩的屏幕截图)序列化为GZipOutputStream.这是正确的方法是什么?
总结一下:
OutputStream?提前致谢.
更新:我的测试,客户端和服务器在同一台机器上
- 全屏幕序列化BufferedImages(只有维度,类型和int []),没有压缩:1.9 fps.
通过GZip流的完整屏幕图像:2.6 fps.
-Downscaled图像(640宽度)和GZip流:6.56 fps.
- 全屏幕图像和RLE编码:4.14 fps.
-Downscaled图像和RLE编码:7.29 fps.
我不熟悉视频压缩,但目前正在使用H.264压缩残留图像的项目
我的问题更多是关于视频编码器的一般性质.据我所知(正如维基百科所解释的那样),块运动补偿编码器将当前帧划分为一些非重叠块,对于每个块,它在当前块来自的参考帧中进行检查,然后计算出它的差异.期望的块和运动补偿块,然后以某种方式对该残差进行编码.
维基百科指出:"块运动补偿的主要缺点是它会在块边界处引入不连续性(块效应).这些伪像以锐利的水平和垂直边缘的形式出现,很容易被人眼发现并产生振铃效果(用于残差帧的变换编码的傅里叶相关变换中的高频子带中的大系数.
因此,由于参考帧已经包含块伪像(因为它被编码),然后这些块伪像被移位到当前块并且计算残差,然后由边界处的块伪像创建的高频.移位块也将显示为残差中的不连续性.并且不连续性通常对压缩不利.
在压缩残差之前,运动补偿块编码器是否以某种方式处理此块伪像?因为它确切地知道块是如何移位的,所以它知道块边界的位置,并且可以在编码残差之前或期间对它们做些什么,在这个地方移除/忽略不必要的高频.如果在像H.264这样的编解码器中执行这样的事情,有人可以解释编码器如何做到这一点的主要概念,给它一些术语等等吗?编码器如何处理参考帧中的块伪像?
我正在尝试使用Android MediaCodec API对NV12流进行硬件编码(avc).
当使用OMX.qcom.video.encoder.avc时,分辨率1280x720和640x480工作正常,而其他(即640x360,320x240,800x480)产生输出,其中色度分量似乎移位(请参阅 快照).
我通过将输入图像保存到jpeg文件来仔细检查输入图像是否正确.此问题仅发生在QualComm设备(即三星Galaxy S4)上.
任何人都有这个正常工作?还需要任何额外的设置/怪癖吗?
android video-encoding hardware-acceleration android-hardware mediacodec
我必须将视频从前端网络上传到我的Django后端.
我需要压缩视频才能上传它.
所以,我需要一些库(例如javascript库)在客户端(浏览器)上使用来压缩视频并调用我的ajax函数来上传它.
有可能吗?
我们可以建议我使用像javascript库这样的东西吗?
我想在处理视频时限制最大 fps。
例如:设置限制为每秒 30 帧。
如果我以 24 fps 处理视频,则不会更改 fps,但如果以 60 fps 处理视频,则将 fps 更改为 30。
是否可以仅使用 FFmpeg(带有过滤器或其他东西)来完成?
我认为可以通过使用这样的过滤器来完成:
-filter:v "fps=fps='min($CURRENT_FPS,30)'"
Run Code Online (Sandbox Code Playgroud)
但我不知道是否可以从表达式中获取当前的 fps。
我想在OpenCV中将图像编码为H264视频。
作为我的图像跟踪软件的一部分,我在Visual Studio 2017 C ++中使用OpenCV 3.4(64位)中的VideoWriter。我使用ffmpeg进行手动编码,并且与OpenCV一起提供,我认为这是最好的选择。我的OpenCV版本表明它已经用ffmpeg编译,并且我可以验证它是否已加载opencv_ffmpeg340_64.dll。
解码H264(AVC1)绝对不错,包括特别是使用ffmpeg API时。但是对MJPG或原始图像以外的任何其他内容进行编码均无效:VideoWriter.Open()通常返回false,在某些情况下,它仅写入空或较小的标头,而不会写入帧。我不仅尝试了ffmpeg API,还尝试了任何可用的API。将控制台/调试输出重定向到VC中的中间窗口不会提供来自OpenCV或ffmpeg的任何消息。
关于使用FFmpeg的OpenCV早期版本的文章很多,包括(Cisco)OpenH264库以及使用它的困难。我尝试了很多选项,安装了编解码器包,包括H264,ffmpeg静态版本,Cisco openH264库,设置路径等,甚至尝试了低级ffmpeg库功能(例如OpenCV中公开的cvCreateVideoWriter),并使用了不同的视频容器(AVI,MPG, MP4)以及fourcc字符串。
我不敢相信在2018年,具有FFmpeg支持的出色OpenCV无法编码除神秘MJPG或原始图像以外的任何内容。如果它使用FFmpeg,那么肯定会有大量功能可用吗?
尽管我认为这应该可行,但我的下一个最佳选择是使用单独的ffmpeg库,该库具有讽刺意味的是,我想像中将另一个ffmpeg.dll添加到我的解决方案中。任何建议表示赞赏!
代码片段(使用任何视频编码API):
VideoWriter writer;
int codec = VideoWriter::fourcc('X', '2', '6', '4');
writer.open("test.avi", codec, 30, colorImage.size(), true);
writer.write(colorImage);
writer.release();
Run Code Online (Sandbox Code Playgroud) 我想创建用户生成的地图和路径并将其导出到视频。在此页面上,https://uber.github.io/kepler.gl/#/demo/ukcommute,我看到它们导出到照片。是否可以从 mapboxGL 地图创建视频?
video-encoding ×10
ffmpeg ×3
video ×3
android ×2
encoding ×2
h.264 ×2
c# ×1
c++ ×1
compression ×1
django ×1
frame-rate ×1
image ×1
java ×1
javascript ×1
mapbox ×1
mapbox-gl ×1
mediacodec ×1
named-pipes ×1
opencv ×1
screenshot ×1