在使用VLC Python绑定时,我无法附加事件处理程序以告知歌曲何时播放完毕.event_attach函数抱怨回调类型.
def __init__(self):
self.vlc = vlc.Instance()
self.vlc_playlist = self.vlc.media_list_new()
self.vlc_player = self.vlc.media_list_player_new()
self.vlc_player.set_media_list(self.vlc_playlist)
self.vlc_events = self.vlc_player.event_manager()
self.vlc_events.event_attach(vlc.EventType.MediaPlayerEndReached, self.SongFinished, 1)
....
def SongFinished(self, *args, **kwargs):
pass
Run Code Online (Sandbox Code Playgroud)
错误:
self.vlc_events.event_attach(vlc.EventType.MediaPlayerEndReached, self.SongFinished, 1)
return libvlc_event_attach(self, i_event_type, f_callback, user_data)
ArgumentError: argument 3: <type 'exceptions.TypeError'>: wrong type
Run Code Online (Sandbox Code Playgroud) 这让我在下午的大部分时间都很忙,而且我无法让它上班,但我觉得我真的很亲近.
我已经设置了openCV,它可以从网络摄像头中获取录像带.为了能够访问此视频源(使用openCV覆盖),我想将openCV python脚本的输出传递给VLC流.我设法让流启动并运行并可以连接到它.VLC调整到正确的宽高比和分辨率,因此它获得了一些正确的数据,但我得到的图像只是抖动 ;
python opencv.py | cvlc --demux=rawvideo --rawvid-fps=30 --rawvid-width=320 --rawvid-height=240 --rawvid-chroma=RV24 - --sout "#transcode{vcodec=h264,vb=200,fps=30,width=320,height=240}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=:8081/stream.flv}" &
Run Code Online (Sandbox Code Playgroud)
脚本的输出是发送到stdout的常量视频源,如下所示
from imutils.video import WebcamVideoStream
vs = WebcamVideoStream(src=0)
while True:
frame = vs.read()
sys.stdout.write(frame.tostring())
Run Code Online (Sandbox Code Playgroud)
上面的例子是我正在使用的脚本的一个愚蠢的版本; 另外我看到我正在使用imutils库; https://github.com/jrosebr1/imutils
如果有人能给我一个正确方向的推动,我会非常感激.我的猜测是stdout.write(frame.tostring())不是vlc所期望的,但我自己也无法弄明白.
我正试图从C#控制VLC媒体播放器.我尝试使用.Net的FindWindow()命令在窗口上获取句柄,但是当我发现每次播放文件时窗口的名称都会改变.我遇到的最大问题是将wm_commands发送到vlc.这种方法适用于Winamp和Windows Media Player,但是对于VLC,它似乎不起作用.
我读到VLC可以通过浏览器进行控制,但我不打算...我已经在其设置中看到它有一些可以调用的热键..但是它们可以被更改,如果我从中调用它们我的代码以某种方式......并且用户更改了它们......真可惜......
我有点卡住了..任何帮助都会很棒......索林
有没有办法在没有脚本等待VLC关闭的情况下使用Linux shell脚本操作VLC.
cvlc test.mp3
echo "Now playing!"
sleep 200
cvlc://pause:60
Run Code Online (Sandbox Code Playgroud)
此代码保持运行VLC直到文件完成,然后显然暂停文件是迟到的.
如何在VLC 2.0.1
My Subtitle后2分钟调整字幕时序.
已经尝试了谷歌,大多数为版本1编写的教程,版本2有不同的配置界面,这对我来说更加困惑.
我想在ubuntu 10.04上为vlc运行'./configure'.但由于某种原因,它无法找到libavcode库.我检查/ usr/lib,它有库,为什么./configure找不到它?
这是'./configure'的错误:
checking for AVCODEC... no
configure: error: Could not find libavcodec or libavutil. Use --disable-avcodec to ignore this error.
Run Code Online (Sandbox Code Playgroud)
但我已经安装了libavcodec-dev,但它仍然失败:
$ sudo apt-get install libavcodec-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libavcodec-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 201 not upgraded.
Run Code Online (Sandbox Code Playgroud)
我检查了'/ usr/lib',我看到了libavcodec.so:
-rw-r--r-- 1 root root 7339558 2010-03-04 04:42 libavcodec.a
lrwxrwxrwx 1 root root 21 2010-06-26 00:38 libavcodec.so -> libavcodec.so.52.20.1
lrwxrwxrwx 1 root …Run Code Online (Sandbox Code Playgroud) 我有一个文件,我需要转换为MPEG-TS,以便它符合以下规范:
基本流比特率[kbit/s]视频:2575音频:2 x 192字幕: - PAT/PMT: - 填充: -
分量TS比特率[kbit/s]视频:2652音频:395字幕:45 PAT/PMT:45填充:62总计:3200 CBR
其他必需组件:PAT PMT空包
可能弹出的组件:NIT,SDT,EIT等.
vcodec="h264"
acodec="mpga"
bitrate="2500"
arate="192"
samplerate=48000
ext="mpg"
mux="ts"
vlc="/usr/bin/vlc"
fmt="mpg"
dst="/home/adam/test/"
for a in *$fmt; do
$vlc -I dummy -vvv "/home/adam/test/" --sout "#transcode{vcodec=$vcodec,venc=x264{profile=main,level=3.0,hrd=cbr,bframes=2},vb=$bitrate,acodec=$acodec,ab=$arate,samplerate=$samplerate,channels=2}:standard{mux=$mux,dst=\"$dst$a.$ext\",ac$
done
Run Code Online (Sandbox Code Playgroud)
使用上面的脚本编码后,一切似乎都可以(视频和音频比特率编解码器都是常量)除了两件事:容器的比特率也应该保留CBR但事实并非如此.此外,填充组件(0x1 ffff) - 缺少空数据包.您是否可以更正脚本以使空数据包以及容器的比特率恒定(3,2 Mbps CBR)?
第二个选项是使用ffmpeg进行编码:
ffmpeg -i video_input.mpg -i audio_input.mp2 -acodec copy -tune zerolatency -x264opts bitrate=2600:vbv-maxrate=2600:vbv-bufsize=166:nal_hrd=cbr -vpre libx264-iptv -vcodec libx264 -f mpegts -muxrate 3200K -y output.ts
Run Code Online (Sandbox Code Playgroud)
但如何取消/禁用/删除SDT表?
既然VLC插件使用的NPAPI在Firefox中停止使用,并且谷歌Chrome已经停止使用NPAPI,那么在这些浏览器中是否有流媒体RTSP直播视频的解决方案?
非常感谢您对此的帮助.
此致,蒂亚戈迪亚斯
我正在使用NAudio库来记录系统麦克风输入 - 连续.
private void RecordStart() {
try {
_sourceStream = new WaveIn {
DeviceNumber = _recordingInstance.InputDeviceIndex,
WaveFormat =
new WaveFormat(
44100,
WaveIn.GetCapabilities(_recordingInstance.InputDeviceIndex).Channels)
};
_sourceStream.DataAvailable += SourceStreamDataAvailable;
_sourceStream.StartRecording();
} catch (Exception exception) {
Log.Error("Recording failes", exception);
}
}
Run Code Online (Sandbox Code Playgroud)
有一个事件处理程序,只要有数据,它就会从记录流中获取数据.
我能够使用现有的音频文件创建一个音频(mp3)HTTP流媒体,并在我的系统中安装VLC播放器.
const int portNumber = 8089;
const string streamName = "fstream_1789846";
const string audio = "C:\\Recording\\Audio\\1789846.wav";
const string windowQuiet = "-I dummy --dummy-quiet";
const string tanscode = ":sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}";
var stream = String.Format(@":http{{mux=mp3,dst=:{0}/{1}}}", portNumber, streamName);
const string keep = ":sout-keep"; …Run Code Online (Sandbox Code Playgroud) 我MobileVLCKit在iOS项目中集成了版本:2.2.2.从Camera Roll播放本地视频时遇到问题.来自文档目录和流媒体的视频工作正常.
我正在使用此代码来提取PHAsset对象的url :
- (void)urlForPhAsset:(PHAsset*)phAsset withCompletionBlock:(void (^)(NSURL* url))completionBlock{
[[PHImageManager defaultManager] requestAVAssetForVideo:phAsset options:nil resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
NSURL* url= nil;
if([asset isKindOfClass:[AVURLAsset class]]){
url= [(AVURLAsset *)asset URL];
}else if([asset isKindOfClass:[AVComposition class]]){
AVCompositionTrack* compositionTrack= [[(AVComposition*)asset tracks] firstObject];
AVCompositionTrackSegment* segment= [[compositionTrack segments] firstObject];
url= [segment sourceURL];
}
completionBlock(url);
}];
}
Run Code Online (Sandbox Code Playgroud)
这些是播放器中显示的警报:
Your input can't be opened
VLC is unable to open the MRL 'file:///var/mobile/Media/DCIM/102APPLE/IMG2728.MOV'.
Check the log for details. …Run Code Online (Sandbox Code Playgroud)