标签: codec

将视频编解码器添加到Android

有人可以解释我需要采取的步骤,以便为Android添加新的编解码器吗?

此外,我希望编解码器作为应用程序安装(或首次启动)的一部分安装,而不是作为完整Android操作系统构建的一部分.

我想这样做的原因是我有一个应用程序需要显示一个不受支持的编解码器(HLS或TS)的视频,但我不想构建一个完整的视频播放器 - 只需与现有的,内置播放器.

谢谢,Alik.

video android codec http-live-streaming mpeg2-ts

18
推荐指数
1
解决办法
2万
查看次数

是否有一个很好的开放编解码器用于截屏视频压缩

从计算机屏幕捕获的视频可以通过针对屏幕视频优化的编解码器进行非常好的压缩.通常,这意味着考虑到屏幕的大区域在帧之间不改变,并且当区域改变时它们经常变回先前看到的状态.

我所知道的唯一一个是Adobe的Flash Screen Video,它被指定为SWF格式的一部分:http://www.adobe.com/devnet/swf.html.它有点巴洛克式,但可以使用.

我正在制作一个实验性的HTML5/JS截屏视图,需要一个基本格式.目前,我能看到的唯一选择是在JavaScript中实现FlashSV解码器,或者滚动我自己的格式.

有谁知道那里的任何其他屏幕视频编解码器?

编辑:接受第一个答案,因为底部的链接提供了一个非常类似于我正在寻找的编解码器:http://wiki.multimedia.cx/index.php?title = PeopleBox_Capture_Codec

video screen codec

18
推荐指数
1
解决办法
6660
查看次数

Python库无需转码即可修改MP3音频

在我开始一个小项目之前,我正在寻找关于mp3格式的一些一般性建议,以确保我没有疯狂追逐.

我对mp3格式内部的理解很少.理想情况下,我正在寻找一个可以抽象出这些细节的库.我更喜欢使用Python(但可以说服不然).

我想以一种相当简单的方式修改一组mp3文件.我对ID3标签不是很感兴趣,而是对音频本身感兴趣.我希望能够删除部分(例如,从第3分钟开始减少10秒),并插入部分(例如,将信用添加到结尾.)

我的理解是mp3格式是有损的,因此将其解码为(例如)PCM格式,进行修改,然后再将其编码为MP3将降低音频质量.(我很想听到我说错了.)

猜想如果我保持mp3格式,将会有某种最小帧或数据包大小来处理,因此操作的粒度可能更粗糙.只要我在几秒钟内获得准确度,我就可以忍受.

我看过PyMedia,但它需要我迁移到PCM来处理数据.同样,LAME希望帮助我编码,但不能访问数据.我见过其他几个只处理ID3标签的库.

任何人都可以推荐一个Python MP3库吗?另外,你能不能理解我的假设,那就是去PCM和背部是坏的和可以避免的?

python mp3 codec

17
推荐指数
2
解决办法
8797
查看次数

为JavaFX 2.2添加其他视频编解码器/ DVD支持

更新:

由于JFX的媒体方面是开源的,我自己也研究过这个问题,但确实有可能,但需要更改和重建JFX源代码(Java和C部分).这里描述的过程适用于任何想要的人.有一个去 - 我在这个例子中添加了MKV支持,但它应该与其他插件非常相似.

问题的其余部分因此主要是历史性的,但我会留在这里供参考.

背景

到目前为止,我一直在使用VLCJ在我的应用程序中播放视频.它可以工作,但是如果可能的话,我想看看我是否可以通过迁移到JavaFX来实现对常见编解码器的类似级别的支持,并为多个虚拟机节省了很多麻烦,以及VLCJ需要可靠地播放多个视频.我不会在这里讨论,但如果你对细节感兴趣,请看我对这个问题的回答.还有跨平台兼容性的问题,它适用于Mac和Linux,但我还没有弄清楚如何让它在Mac上显示(我相信有一些安全措施可以防止一个进程获得对另一个本机的访问权限)组件,但这又超出了这个问题的范围.)

它可以归结为这样一个事实:虽然它有效,但是如果有另一种解决方案更容易,那么很多维护和麻烦都可以使用多个虚拟机并稳定地将它们连接起来.VLC对于播放几乎任何东西都有相当的传奇支持,这就是为什么我到目前为止已经使用它了,我有兴趣看看我是否可以在JavaFX中得到类似的结果 - 或者至少它是否可以以跨平台的方式提供这样做的手段.

研究

JavaFX 2.0支持视频 - 太棒了!但目前官方的产品线支持"包含VP6视频和MP3音频的FLV".有没有办法扩展它以增加对更多编解码器的支持?没有我想支持的硬编解码器,它更多的是尽我所能,所以我正在寻找一种可扩展的方法来实现上述目标.

我想知道它是否会播放本机安装在机器上的编解码器的视频,并且它本身并不宣传自己(因为该功能显然是依赖于机器而不是跨平台的.)但是没有骰子,我尝试了一个数字常见的格式,除了它陈述的内容之外,它确实拒绝播放任何其他内容.

从查看JavaFX 1.3开始,它还支持其他依赖于平台的编解码器,具体取决于它的安装位置.有没有办法在JavaFX 2中获得这种行为?或者是否计划随后发布?我无法在路线图上找到任何有关它的信息或Oracle的任何评论.

我能从广泛搜索中找到的东西在这里意味着它可能是可能的,但似乎没有人知道如何.我也有兴趣知道它是否基于GStreamer,为什么GStreamer支持的所有格式都不包含在默认值中?

在使用JavaFX播放DVD方面,我绝对无处可去,所以我认为目前这只是一个禁忌.如果有人确实有任何想法或信息,我会全力以赴.

其他方法

我想知道的一种方法可能是将JMC jar从这里描述的旧JavaFX中删除,并尝试将其与JavaFX 2一起使用.我不认为任何人对这种方法有什么好运或类似的东西?

所有事情都失败了,如果任何人有任何信息或链接,如果/当支持其他编解码器将支持开箱即用,那么我也有兴趣听到这一点.或者,如果有人在Oracle有任何联系方式,我可以要求也会感激!我一直渴望在Java中获得体面的视频支持一段时间,我想这可以归结为是试图弄清楚JavaFX是否是这个的答案,或者只是另一个半心半意的尝试,它永远不会超过它此刻呢!我希望它不是后者,但我还没有看到很多东西来表明情况.

java video javafx codec vlcj

17
推荐指数
4
解决办法
9116
查看次数

如何使用Blob URL,MediaSource或其他方法播放连续的Blob媒体片段?

我试图通过缺乏不同的描述来实现离线媒体上下文.

这个概念是创造1秒Blob的录制媒体,具有的能力

  1. Blobs独立播放1秒HTMLMediaElement
  2. 从连接的Blobs 播放完整的媒体资源

问题是,一旦Blobs被连接起来,媒体资源就不会HTMLMedia使用a Blob URL或者在元素上播放MediaSource.

创建的Blob URL只播放连接Blob的1秒.MediaSource抛出两个例外

DOMException: Failed to execute 'addSourceBuffer' on 'MediaSource': The MediaSource's readyState is not 'open'
Run Code Online (Sandbox Code Playgroud)

DOMException: Failed to execute 'appendBuffer' on 'SourceBuffer': This SourceBuffer has been removed from the parent media source.
Run Code Online (Sandbox Code Playgroud)

如何正确编码连接的Blobs或以其他方式实现变通方法以将媒体片段作为单个重组媒体资源播放?

<!DOCTYPE html>
<html>

<head>
</head>

<body>
  <script>
    const src = "https://nickdesaulniers.github.io/netfix/demo/frag_bunny.mp4";
    fetch(src)
      .then(response => response.blob())
      .then(blob => …
Run Code Online (Sandbox Code Playgroud)

javascript media codec bloburls media-source

17
推荐指数
1
解决办法
4300
查看次数

FFMPEG具有硬件编解码器支持

ffmpeg在Android 2.2上构建了一个简单的媒体播放器.硬件是基于arm cortex-a8的1GHz处理器,512 MB RAM.我的性能很低,大约15 FPS的800x600 mp4视频.关于如何提高性能,我有几个问题

  • 如何使用目标设备上提供的硬件编解码器.如何配置ffmpeg以使用可用的硬件解码器?GPU或图形驱动程序是否必须公开一些标准API,如OpenMax IL?

  • 在构建ffmpeg时应该启用哪些选项,以便可以针对目标硬件进行优化?就像是: --cpu=cortex=a8 --extra-cflags="-mfpu=neon" ...

我已经环顾网了,但我找不到我要找的答案.我希望有人可以就此提出建议.

提前致谢!

android ffmpeg codec

15
推荐指数
1
解决办法
3415
查看次数

如何创建自定义媒体播放器以在Android中播放自定义编解码器?

这里是n00b(第一个Android项目).我收到了一个与Android固件版本集成的自定义视频编解码器.它是一个.so文件,包含一个继承自MediaPlayerInterface的类,以及一个自定义MediaPlayerService实现,用于从相应文件类型的create()工厂函数返回自定义编解码器类的实例.

我想用这个编解码器,可以在不包含固件的编解码器,通过将.so文件在我的库/ armeabi文件夹,并通过JNI调用它的手机安装一个视频播放器应用程序的一部分.

这个问题的答案我得知,在MediaPlayer框架内无法做到这一点,我必须从头开始创建一个新的媒体播放器.首先,我在Java中实现了一个UI,并将其设置为使用自定义视图(而不是VideoView),该视图扩展了SurfaceView并使用MediaPlayer类的实例来播放视频.然后我用自定义媒体播放器Java类替换了这个MediaPlayer实例.我已经设置了JNI接口,模仿android_media_MediaPlayer.cpp的方式,并在JNI代码中调用MediaPlayer C++类.现在我需要用自定义C++媒体播放器类替换.

这是我开始遇到问题的地方.实施自定义播放器的推荐方法是什么?有吗?除了在源头拖网之外,还有一些关于这些东西的在线文档吗?我可以使用多少框架以及我需要多少重新实现自己?我是否必须实现自己的MediaPlayerService等价物?

任何提示非常感谢.

video android codec media-player mediaplayerservices

14
推荐指数
1
解决办法
7657
查看次数

Android sip堆栈与编解码器操作支持?

我一直在寻找一个Android设备的框架,它通过SIP协议启用reInvite方法.我的目标是能够在通话时切换编解码器.我试图用一些现有的库来做这件事,但我已经走到了尽头.我曾尝试使用SipDroid具有set_codec()方法,但我没有设法找到任何像样的文档.我也尝试过使用原生的android.net.sip库,但我似乎没有找到如何在那里更改它们...有没有人对这样一个支持reInvite的库有任何建议,就像我描述的那样,或者有关使用我提到的图书馆的任何提示?先感谢您...

ps:我尝试过使用mobicents和asterisk作为服务器..

java android sip codec

14
推荐指数
1
解决办法
1497
查看次数

Java:编写自定义视频编解码器的指南

我有一个非常奇怪的问题,但这里是:

是否有可能,是否有任何用C++或Java编写自定义视频编解码器的指南?

这是奇怪的部分:我不需要深入研究那些我不理解的有关音频和电影的信息.我真正需要的是如何在电影播放器​​和电影文件之间制作软件层的技术背景.

原因如下:我想在C++/Java中创建一个库或最终的2个函数 - 编码/解码 - 它将采用任何类型文件的RAW二进制输入,并根据给定的密码或类似的东西对其进行编码/解码.然后我需要在电影播放器​​和电影文件之间进行此处理.最终结果将是受密码保护的mp4/avi/mpeg/wmv(并不重要)文件,只能使用此"编解码器"播放.编解码器的内部逻辑现在不是问题.

我怎么想象它就像一个流,电影播放器​​请求文件并调用我的encode()函数,它需要一大块文件,解码它(它已经被编码)并返回wmv/mp4等格式的正确字节.

这有可能吗?怎么样?

c++ java codec video-player

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

无法使用opencv打开视频

做其他事情时,opencv工作正常.它可以打开图像并显示图像.但它无法打开视频.

我用来打开视频的代码如下

import cv2

cap = cv2.VideoCapture("MOV_0006.mp4")

while True:
    ret, frame = cap.read()

    cv2.imshow('video', frame)
    if cv2.waitKey(1) & 0xff == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

但是在执行时,它会输出如下所示的错误消息

[h264 @ 0x1053ba0] AVC: nal size 554779904
[h264 @ 0x1053ba0] AVC: nal size 554779904
[h264 @ 0x1053ba0] no frame!
Run Code Online (Sandbox Code Playgroud)

vlcmplayer可播放该视频,但OpenCV的不能.

我已经安装了x264libx264-142编解码器包.(使用sudo apt-get install)

我的ubuntu版本是14.04 trusty.

我不确定它是否是编解码器问题?

我用WITH_UNICAP=ON或用了重建opencv WITH_UNICAP=OFF,但它根本不会影响问题.错误消息永远不会改变.

python video opencv codec

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