我一整天都想用Python来弄清楚Qt的Phonon库.
我的长期目标是看看我是否可以让它播放mms://流,但由于我无法在任何地方找到这样做的实现,我将自己解决这个问题.(想想如果有人知道更多关于这一点的话,我会把它放在那里,如果没有什么大不了的话.)
无论如何,我想我会在网上发现的一个工作示例中倒退.这将启动文件浏览器并播放指定的mp3文件.我想删除文件浏览器的东西并将其归结为执行脚本的基本要素并让它播放带有硬编码路径的Mp3文件.
我假设我的问题是对setCurrentSource()的误解并指定了数据类型.(见:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/phonon-mediasource.html#fileName)
我保持我的问题有点广泛,因为理解Phonon的任何帮助将不胜感激.
import sys
from PyQt4.QtGui import QApplication, QMainWindow, QDirModel, QColumnView
from PyQt4.QtGui import QFrame
from PyQt4.QtCore import SIGNAL
from PyQt4.phonon import Phonon
class MainWindow(QMainWindow):
m_model = QDirModel()
def __init__(self):
QMainWindow.__init__(self)
self.m_fileView = QColumnView(self)
self.m_media = None
self.setCentralWidget(self.m_fileView)
self.m_fileView.setModel(self.m_model)
self.m_fileView.setFrameStyle(QFrame.NoFrame)
self.connect(self.m_fileView,
SIGNAL("updatePreviewWidget(const QModelIndex &)"), self.play)
def play(self, index):
self.delayedInit()
self.m_media.setCurrentSource(
Phonon.MediaSource(self.m_model.filePath(index)))
self.m_media.play()
def delayedInit(self):
if not self.m_media:
self.m_media = Phonon.MediaObject(self)
audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
Phonon.createPath(self.m_media, audioOutput)
def main():
app = QApplication(sys.argv)
QApplication.setApplicationName("Phonon Tutorial …Run Code Online (Sandbox Code Playgroud) 我正在调试打印时元素定位有问题的站点(我有一个单独的print.css文件,链接元素由media ="print"属性链接).此问题仅发生在IE7和IE8中.
我正在寻找的是一种使用打印介质类型查看页面的方法,但仍然可以使用IE8的开发人员工具来查看元素详细信息并实时编辑等.
我正在寻找的功能类似于Chris Pederick的Firefox开发人员扩展中的"按媒体类型显示CSS"功能.(但这个问题不会出现在firefox中......也不会出现在safari中,甚至在IE6中也不会出现.)
我正在尝试在J2ME中编写一个简单的媒体播放应用程序.目前我从最简单的事情开始,我只想从jar文件中包含的资源中播放wav文件.我正在使用这个简单的代码:
DataInputStream wav = new DataInputStream(getClass().getResourceAsStream("sample.wav"));
Player player = Manager.createPlayer(wav, "audio/x-wav");
player.addPlayerListener(this);
player.realize();
VolumeControl vc = (VolumeControl) player.getControl("VolumeControl");
if( vc != null )
vc.setLevel(100);
player.start();
Run Code Online (Sandbox Code Playgroud)
我删除了一些日志代码.我在两部手机上运行:带有最新固件的诺基亚E65和带有原始固件的诺基亚3110c.在E65上,我看到播放器已创建,它开始播放,并且没有异常抛出.但是我什么都听不到......同样的波形文件在内置媒体播放器中运行良好.如你所见,我附加了一个玩家监听器,它只收到一条消息:STARTED.没有VOLUME_CHANGED和END_OF_MEDIA事件.
在3110c上运行的相同jar文件播放正常并显示所有预期的玩家事件.
不知道E65可能出了什么问题,或者我做错了什么?提前致谢.
media ="screen"在下面的css代码中是什么意思?
<style type="text/css" media="screen">
Run Code Online (Sandbox Code Playgroud) 我的应用程序显示sdcard中的歌曲列表,并且有一个选项可以从SD卡中删除歌曲.
即使删除了歌曲,该歌曲仍会出现在我的应用程序列表中.
如何更新android媒体数据库并显示更新的数据库?
我想将NSInputStream传递给MPMoviePlayerController,或MPMoviePlayerViewController,或其他任何东西.
输入流利用Apple框架不支持的协议.
我尝试创建一个自定义的NSURLProtocol(这种类型仅适用于设备(不是模拟器)),但是MediaPlayer尝试缓存所有内容并导致应用程序在分配250MB时崩溃.视频从不播放.
关于如何进行的任何想法?我知道有些应用程序会这样做.
我真的不想建立自己的媒体播放器,但似乎可能,不是吗?有没有关于如何仅使用CoreMedia而不是FFMPEG(等)的例子?编解码器选择对我来说并不重要 - 只是通过专有协议进行流式传输时的能力.
谢谢!
我需要为集群文件系统卷上的文件构建RESTful API.我有20个服务器,它们共享相同的文件系统.我需要的只是RESTful API服务,它允许我使用stat(),read(),write(),listFolder(),delete(),setacl()等.其他一切都由集群文件系统处理,所以我只需要具有上述功能.我需要一些非常成熟的东西,因此它支持访问控制列表,它具有高性能API(如java),维护库或项目,并且它运行Linux,锁定支持也非常有用.我想像getDuration()一样自己添加其他函数,所以如果它是开源的,那将是有利的.如果您知道这样的代码可以帮助我构建这样的东西,我将非常感激.
它的目的是允许BPM系统检查各种Stornext卷上的文件是否正常.由于这些系统落后于各种防火墙,并且因为高可用性而导致NFS或SMB不是很好,所以最好的选择似乎是RESTful API作为防火墙区域之间所有文件操作的单一来源,通过HTTP(S)请求以某种方便的方式做NFS或SSH.
如果我mp3: "/Music/StreamUploadedSongs/1"在以下代码中使用:
var player = new $("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
mp3: "/Music/StreamUploadedSongs/1",
});
},
cssSelectorAncestor: "#jp_container_1",
swfPath: "~Scripts/Jplayer/jquery.jplayer.swf",
useStateClassSkin: true,
autoBlur: false,
keyEnabled: true
}
});
Run Code Online (Sandbox Code Playgroud)
这就是它的样子,你可以看到jplayer没有正确地移动时间(它们是重叠的)并且搜索/播放栏也不起作用,尽管仍然可以播放歌曲:
Html标记:
<audio id="jp_audio_0" preload="metadata" src="http://localhost:6060/Music/StreamUploadedSongs/1"></audio>
音乐控制器:
public ActionResult StreamUploadedSongs(int id)
{
byte[] song = db.UploadedSongs.Where(x => x.Id == id).FirstOrDefault().SongBytes;
return File(song, "audio/*");
}
Run Code Online (Sandbox Code Playgroud)
如果我改为将mp3属性更改为:mp3: "http://www.jplayer.org/audio/mp3/TSP-01-Cro_magnon_man.mp3"那么它可以完美地工作.
var player = new $("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
mp3: "http://www.jplayer.org/audio/mp3/TSP-01-Cro_magnon_man.mp3",
});
},
cssSelectorAncestor: "#jp_container_1",
swfPath: "~Scripts/Jplayer/jquery.jplayer.swf",
useStateClassSkin: true, …Run Code Online (Sandbox Code Playgroud) 您对以下代码为何不起作用有任何想法吗 Android/Chrome?
它适用于Desktop/Chrome。
function console_log(data) {
console.log(data)
var data_str = String(data);
var $div = $('<div></div>');
$div.append(data_str);
$('.console').append($div);
}
$(function(){
var constraints = { audio: true, video:false }
//---
console_log('navigator.mediaDevices...');
console_log(navigator.mediaDevices);
//---
// # TEST 01 #
var userMedia = navigator.getUserMedia(constraints, function(){
console_log('---');
console_log('# TEST 01 # Inside Success Callback');
}, function(err){
console_log('---');
console_log('# TEST 01 # Inside Error Callback');
console_log(err);
});
//---
navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
console_log('---');
console_log('# TEST 02 # Inside Success Callback');
}).catch(function(err) {
console_log('---');
console_log('# TEST …Run Code Online (Sandbox Code Playgroud)在我的Android应用中,我正在尝试创建视频文件,在视频的给定时间位置添加音轨.我使用了MediaMuxer并改变了presentationTimeUs移动音频的值.但显然这不是要走的路,因为视频的开始时间也会发生变化.另一个问题是mp3音频不起作用.这是我到目前为止的尝试:
final long audioPositionUs = 10000000;
File fileOut = new File (Environment.getExternalStoragePublicDirectory (
Environment.DIRECTORY_MOVIES) + "/output.mp4");
fileOut.createNewFile ();
MediaExtractor videoExtractor = new MediaExtractor ();
MediaExtractor audioExtractor = new MediaExtractor ();
AssetFileDescriptor videoDescriptor = getAssets ().openFd ("video.mp4");
// AssetFileDescriptor audioDescriptor = getAssets ().openFd ("audio.mp3"); // ?!
AssetFileDescriptor audioDescriptor = getAssets ().openFd ("audio.aac");
videoExtractor.setDataSource (videoDescriptor.getFileDescriptor (),
videoDescriptor.getStartOffset (), videoDescriptor.getLength ());
audioExtractor.setDataSource (audioDescriptor.getFileDescriptor (),
audioDescriptor.getStartOffset (), audioDescriptor.getLength ());
MediaFormat videoFormat = null;
for (int i = 0; i < videoExtractor.getTrackCount (); …Run Code Online (Sandbox Code Playgroud)