I am in the concept phase of an application that is going to have a lot of Audio/Video input and output. I want to do it in Java; but somehow am not fully convinced yet. What do you think? How bad could it be? And any advices?
我处于应用程序的概念阶段,该应用程序将具有大量音频/视频输入和输出。我想用Java做;但不知怎的,我还没有完全相信。你怎么看?到底能有多糟糕?还有什么建议吗?
Why I am thinking Java:
为什么我在想Java:
- It's the language I'm most comfortable with.
- Easier cross platform migration would be a bonus.
- Cannot afford commercial platforms (like .NET) or not good enough in other free alternatives (like Python)
- I'm also slightly inclined towards C++/Qt; but that would take more time for me as I'm not great in that and I am a bit worried about maintainability.
这是我最熟悉的语言。
更容易跨平台迁移将是一个奖励。
无法承受商业平台(如.NET)或其他免费替代品(如Python)不够好
我也略微倾向于C ++ / Qt;但这对我来说需要更多的时间,因为我不是很好,我有点担心可维护性。
6 个解决方案
#1
C++ would be the first choice because of performance concerns often present in Audio/Video processing as well as the range of available libraries for video/audio.
由于音频/视频处理中经常出现的性能问题以及视频/音频可用库的范围,C ++将是首选。
You do make a good point about being familiar with Java. If you are pressed for time, this is even more important. However if you can spare some time for learning, C++ would be well worth it.
你确实熟悉Java。如果时间紧迫,这就更重要了。但是,如果您可以节省一些时间进行学习,那么C ++将非常值得。
Regarding .NET: The .NET SDK with everything you need is freely downloadable. Get hold of a free IDE such as SharpDevelop and you are up and running. It's Visual Studio that costs money, you don't need Visual Studio to do .NET development.
关于.NET:.NET SDK包含您需要的一切,可以免费下载。掌握SharpDevelop等免费IDE,即可开始运行。这是花费金钱的Visual Studio,您不需要Visual Studio来进行.NET开发。
#2
If you're interested, check out Xuggler. It exposes all the power of FFmpeg, but as a Java API that runs on Windows, Mac and Linux. The advantage is you get all the power of FFmpeg but from Java. The disadvantage is it requires the FFmpeg native DLLs/shared-libraries to be installed.
如果您有兴趣,请查看Xuggler。它暴露了FFmpeg的所有功能,但作为在Windows,Mac和Linux上运行的Java API。优点是你可以从Java获得FFmpeg的所有功能。缺点是它需要安装FFmpeg本机DLL /共享库。
#3
Easier cross platform migration would be a bonus.
更容易跨平台迁移将是一个奖励。
Audio and video means you will be dealing with dedicated native libraries and JNI-wrappers for each supported platform; in this case, the cross-platform argument for Java does not really apply.
音频和视频意味着您将为每个支持的平台处理专用的本机库和JNI包装器;在这种情况下,Java的跨平台参数并不真正适用。
#4
I believe that when you want to write an audio/video application, the programming language you will use is the second most important thing. The most important thing is the audio/video framework your application will use since this is what defines your capabilities.
我相信当你想要编写音频/视频应用程序时,你将使用的编程语言是第二重要的。最重要的是您的应用程序将使用的音频/视频框架,因为这是定义您的功能的。
I am aware of two popular generic video frameworks that can be used to accesd most multimedia types: Directshow and ffmpeg. Directshow is tied with windows, so only ffmpeg is left.
我知道两种流行的通用视频框架可用于访问大多数多媒体类型:Directshow和ffmpeg。 Directshow与windows绑定,因此只留下ffmpeg。
Ffmpeg has versions in both windows and unix and, although it is written in C, it can be used from a lot of languages.
Ffmpeg在windows和unix中都有版本,虽然它是用C语言编写的,但它可以在很多语言中使用。
There is even a number of java wrappers for ffmpeg (for instance, take a look at xuggle)!
ffmpeg甚至有很多java包装器(例如,看看xuggle)!
#5
Rusty.in,
How about trying to do JavaFX Media API. Recently, the version of the JavaFX is 1.2.0 with GUI Application as well. It supports the Swing. The grammar is based on the script style; however, you can deploy the existing Swing components into the JavaFX.
如何尝试JavaFX Media API。最近,JavaFX的版本也是1.2.0,带有GUI应用程序。它支持Swing。语法基于脚本风格;但是,您可以将现有的Swing组件部署到JavaFX中。
I hope it helps.
我希望它有所帮助。
Tiger
#6
Rusty, what did you wind up doing? I too have a video app I'd like to do, but really would prefer Java/JavaFX over C++. The thing about the using Flash and/or the current JavaFX video support is that Flash video playback is not frame-accurate. I really need to be able to stop/start/step on individual frames like you can with QuickTime.
生锈,你做了什么?我也有一个我想做的视频应用程序,但真的更喜欢Java / JavaFX而不是C ++。关于使用Flash和/或当前JavaFX视频支持的事情是Flash视频播放不是帧精确的。我真的需要能够像QuickTime一样停止/开始/踩单个帧。
Has anyone tried doing playback with Xuggler and Java/JavaFX?
有人试过用Xuggler和Java / JavaFX进行播放吗?
#1
C++ would be the first choice because of performance concerns often present in Audio/Video processing as well as the range of available libraries for video/audio.
由于音频/视频处理中经常出现的性能问题以及视频/音频可用库的范围,C ++将是首选。
You do make a good point about being familiar with Java. If you are pressed for time, this is even more important. However if you can spare some time for learning, C++ would be well worth it.
你确实熟悉Java。如果时间紧迫,这就更重要了。但是,如果您可以节省一些时间进行学习,那么C ++将非常值得。
Regarding .NET: The .NET SDK with everything you need is freely downloadable. Get hold of a free IDE such as SharpDevelop and you are up and running. It's Visual Studio that costs money, you don't need Visual Studio to do .NET development.
关于.NET:.NET SDK包含您需要的一切,可以免费下载。掌握SharpDevelop等免费IDE,即可开始运行。这是花费金钱的Visual Studio,您不需要Visual Studio来进行.NET开发。
#2
If you're interested, check out Xuggler. It exposes all the power of FFmpeg, but as a Java API that runs on Windows, Mac and Linux. The advantage is you get all the power of FFmpeg but from Java. The disadvantage is it requires the FFmpeg native DLLs/shared-libraries to be installed.
如果您有兴趣,请查看Xuggler。它暴露了FFmpeg的所有功能,但作为在Windows,Mac和Linux上运行的Java API。优点是你可以从Java获得FFmpeg的所有功能。缺点是它需要安装FFmpeg本机DLL /共享库。
#3
Easier cross platform migration would be a bonus.
更容易跨平台迁移将是一个奖励。
Audio and video means you will be dealing with dedicated native libraries and JNI-wrappers for each supported platform; in this case, the cross-platform argument for Java does not really apply.
音频和视频意味着您将为每个支持的平台处理专用的本机库和JNI包装器;在这种情况下,Java的跨平台参数并不真正适用。
#4
I believe that when you want to write an audio/video application, the programming language you will use is the second most important thing. The most important thing is the audio/video framework your application will use since this is what defines your capabilities.
我相信当你想要编写音频/视频应用程序时,你将使用的编程语言是第二重要的。最重要的是您的应用程序将使用的音频/视频框架,因为这是定义您的功能的。
I am aware of two popular generic video frameworks that can be used to accesd most multimedia types: Directshow and ffmpeg. Directshow is tied with windows, so only ffmpeg is left.
我知道两种流行的通用视频框架可用于访问大多数多媒体类型:Directshow和ffmpeg。 Directshow与windows绑定,因此只留下ffmpeg。
Ffmpeg has versions in both windows and unix and, although it is written in C, it can be used from a lot of languages.
Ffmpeg在windows和unix中都有版本,虽然它是用C语言编写的,但它可以在很多语言中使用。
There is even a number of java wrappers for ffmpeg (for instance, take a look at xuggle)!
ffmpeg甚至有很多java包装器(例如,看看xuggle)!
#5
Rusty.in,
How about trying to do JavaFX Media API. Recently, the version of the JavaFX is 1.2.0 with GUI Application as well. It supports the Swing. The grammar is based on the script style; however, you can deploy the existing Swing components into the JavaFX.
如何尝试JavaFX Media API。最近,JavaFX的版本也是1.2.0,带有GUI应用程序。它支持Swing。语法基于脚本风格;但是,您可以将现有的Swing组件部署到JavaFX中。
I hope it helps.
我希望它有所帮助。
Tiger
#6
Rusty, what did you wind up doing? I too have a video app I'd like to do, but really would prefer Java/JavaFX over C++. The thing about the using Flash and/or the current JavaFX video support is that Flash video playback is not frame-accurate. I really need to be able to stop/start/step on individual frames like you can with QuickTime.
生锈,你做了什么?我也有一个我想做的视频应用程序,但真的更喜欢Java / JavaFX而不是C ++。关于使用Flash和/或当前JavaFX视频支持的事情是Flash视频播放不是帧精确的。我真的需要能够像QuickTime一样停止/开始/踩单个帧。
Has anyone tried doing playback with Xuggler and Java/JavaFX?
有人试过用Xuggler和Java / JavaFX进行播放吗?