VLCKit issueshttps://code.videolan.org/videolan/VLCKit/-/issues2024-03-19T10:52:47Zhttps://code.videolan.org/videolan/VLCKit/-/issues/725Replace VLCKit Thumbnailer with libvlc implementation2024-03-19T10:52:47ZFelix Paul Kühnefkuehne@videolan.orgReplace VLCKit Thumbnailer with libvlc implementationThe existing thumbnailer in VLCKit should be replaced by the libvlc implementation, which offers more features and should at least be equally performant.The existing thumbnailer in VLCKit should be replaced by the libvlc implementation, which offers more features and should at least be equally performant.4.0https://code.videolan.org/videolan/VLCKit/-/issues/721EXC_BAD_ACCESS (code=1, address=0xf00000020) in HandleMediaDurationChanged2024-01-22T09:15:39ZDominik BernroiderEXC_BAD_ACCESS (code=1, address=0xf00000020) in HandleMediaDurationChangedI am trying to create an audio player using SwiftUI and VLCKit. I installed VLCKit `4.0.0a2` (to fix a bug that mutes audio for 1s after resuming) using CocoaPods. I added a Bridging Header and stream m4a audio from an URL like this:
```...I am trying to create an audio player using SwiftUI and VLCKit. I installed VLCKit `4.0.0a2` (to fix a bug that mutes audio for 1s after resuming) using CocoaPods. I added a Bridging Header and stream m4a audio from an URL like this:
```swift
self.vlcPlayer = VLCMediaPlayer()
[...]
let streamUrl = try await source.fetchStreamUrl(track: track)
self.vlcPlayer.media = VLCMedia(url: streamUrl)
try AVAudioSession.sharedInstance().setActive(true)
self.vlcPlayer.play()
```
After executing the second half of the snippet, my app crashed with EXC_BAD_ACCESS (code=1, address=0xf00000020) in HandleMediaDurationChanged.
Here are my other relevant files for this issue:
`Nyx-Bridging-Header.h:`
```
#import "MobileVLCKit/MobileVLCKit.h"
```
`Podfile`
```
source 'https://cdn.cocoapods.org/'
target 'Nyx' do
use_frameworks!
platform :ios, '17.0'
pod 'MobileVLCKit', '~>4.0.0a2'
end
```
Please let me know if you need any additional information about this issue.4.0https://code.videolan.org/videolan/VLCKit/-/issues/707Carthage: Binary project specification for XCFramework without 32-bit slices2023-05-11T05:37:41ZJesper LiljebladCarthage: Binary project specification for XCFramework without 32-bit slicesWith the addition of the optional build parameter including 32-bit slices in the built XCFramework it would be nice to have a separate Carthage binary project specification listing frameworks without these slices, in addition to the curr...With the addition of the optional build parameter including 32-bit slices in the built XCFramework it would be nice to have a separate Carthage binary project specification listing frameworks without these slices, in addition to the current Carthage json files.4.0https://code.videolan.org/videolan/VLCKit/-/issues/692Play the audio to get an error log:Mpeg4GASpecificConfig: error 12023-04-17T17:16:54ZJzwOnlyPlay the audio to get an error log:Mpeg4GASpecificConfig: error 1The following error message is displayed when playing with VLC : `Mpeg4GASpecificConfig: error 1`
It will play normally with FFPlay,Here are the audio details obtained using ffprobe
`[admin]% ffprobe -i http://192.168.67.210:3333/api/st...The following error message is displayed when playing with VLC : `Mpeg4GASpecificConfig: error 1`
It will play normally with FFPlay,Here are the audio details obtained using ffprobe
`[admin]% ffprobe -i http://192.168.67.210:3333/api/stream/audio\?session\=123456 -show_format
ffprobe version 4.4 Copyright (c) 2007-2021 the FFmpeg developers
built with Apple clang version 12.0.5 (clang-1205.0.22.9)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4_2 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://192.168.67.210:3333/api/stream/audio?session=123456':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
Duration: 00:00:00.15, start: 0.000000, bitrate: N/A
Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 159 kb/s (default)
Metadata:
handler_name : Sound
vendor_id : [0][0][0][0]
[FORMAT]
filename=http://192.168.67.210:3333/api/stream/audio?session=123456
nb_streams=1
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=0.149333
size=N/A
bit_rate=N/A
probe_score=100
TAG:major_brand=dash
TAG:minor_version=0
TAG:compatible_brands=iso6avc1mp41
[/FORMAT]`4.0https://code.videolan.org/videolan/VLCKit/-/issues/686Cache libvlc builds when compileAndBuildVLCKit.sh/libvlc hash doesn't change2023-02-19T15:19:02ZAlexandre Janniauxajanni@videolabs.ioCache libvlc builds when compileAndBuildVLCKit.sh/libvlc hash doesn't changeLike done in vlc.git for the contribs, we could cache the libvlc builds on the FTP for following builds when they wouldn't change, to improve the speed of the CI.Like done in vlc.git for the contribs, we could cache the libvlc builds on the FTP for following builds when they wouldn't change, to improve the speed of the CI.4.0https://code.videolan.org/videolan/VLCKit/-/issues/682didAddSubview: ~ Crash Occurred in 4.0.0a12023-02-20T10:05:31Z짬댕댕이didAddSubview: ~ Crash Occurred in 4.0.0a1Development environment is
iOS 15.6.1 , MobileVLCKit v4.0.0a1
VLCKit#589
It seems to be the same issue, but why is it in the 4.0.0 completed issue?
In the 3.x version, there is a delay when playing again after pausing, and can't no...Development environment is
iOS 15.6.1 , MobileVLCKit v4.0.0a1
VLCKit#589
It seems to be the same issue, but why is it in the 4.0.0 completed issue?
In the 3.x version, there is a delay when playing again after pausing, and can't not time and position management with much greater precision
, can't not this allows subsecond seek intervals, so the problem disappeared when using 4.0.0
But there's a crash coming out there.
Do you have any ideas?4.0Alexandre Janniauxajanni@videolabs.ioAlexandre Janniauxajanni@videolabs.iohttps://code.videolan.org/videolan/VLCKit/-/issues/677Thumbnailing fails with VLCv42023-01-19T12:22:20ZFelix Paul Kühnefkuehne@videolan.orgThumbnailing fails with VLCv4```
libvlc encoder error: no suitable encoder module for fourcc 'jpeg'.
VLC probably does not support this image format.
``````
libvlc encoder error: no suitable encoder module for fourcc 'jpeg'.
VLC probably does not support this image format.
```4.0https://code.videolan.org/videolan/VLCKit/-/issues/672Race condition on events callbacks2022-12-19T19:20:28ZAlexandre Janniauxajanni@videolabs.ioRace condition on events callbacksThe event callbacks have been rewritten with dispatch as
```
static void HandleMediaParsedChanged(const libvlc_event_t * event, void * self)
{
@autoreleasepool {
VLCMedia *media = (__bridge VLCMedia *)self;
dispatch...The event callbacks have been rewritten with dispatch as
```
static void HandleMediaParsedChanged(const libvlc_event_t * event, void * self)
{
@autoreleasepool {
VLCMedia *media = (__bridge VLCMedia *)self;
dispatch_async(dispatch_get_main_queue(), ^{
[media parsedChanged];
});
}
}
```
However:
- application can reach [obj dealloc] anytime
- dealloc will wait on callbacks being executed at the libvlc_event_detach location (libvlc event manager thread)
- the handler for the event will have a reference on `media` even if [media dealloc] is being called in another thread
- when dispatch_async ends (but the block is not yet executed), the [media dealloc] will continue and terminate
- the block will be executed with an invalid media reference
It leads to crash in those rare interleavings.4.0Alexandre Janniauxajanni@videolabs.ioAlexandre Janniauxajanni@videolabs.iohttps://code.videolan.org/videolan/VLCKit/-/issues/671Single VLCKit.framework?2024-03-17T09:08:11ZBen KingSingle VLCKit.framework?Is there any interest in having a single `VLCKit.framework` that supports all Apple platforms: macOS, iOS and tvOS, instead of 3 separate frameworks? I've already done for macOS + iOS, and would be happy to submit a merge request?Is there any interest in having a single `VLCKit.framework` that supports all Apple platforms: macOS, iOS and tvOS, instead of 3 separate frameworks? I've already done for macOS + iOS, and would be happy to submit a merge request?4.0Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/VLCKit/-/issues/667[VLCKit-4.0-current] Error: Setting 'mediaPlayer?.audio?.isMuted = true' befo...2022-12-12T13:02:22ZSerge Ivamov[VLCKit-4.0-current] Error: Setting 'mediaPlayer?.audio?.isMuted = true' before calling 'mediaPlayer?.play()' is ignored.# Code
```swift
let mp = VLCMediaPlayer()
mp.drawable = videoView
mp.media = media1
mp.audio?.isMuted = true // audio is muted
mp.play()
Task {
try await Task.sleep(nanoseconds:...# Code
```swift
let mp = VLCMediaPlayer()
mp.drawable = videoView
mp.media = media1
mp.audio?.isMuted = true // audio is muted
mp.play()
Task {
try await Task.sleep(nanoseconds: 5_000_000_000) // Wait for 5 seconds
print("isMuted = \(mp.audio?.isMuted), audio is on")
mp.audio?.isMuted = true
print("isMuted = \(mp.audio?.isMuted), audio is off")
}
```
# Output
```
currtime: Optional(00:03) position: Optional(0.017977801448854334)
isMuted = Optional(true), audio is on
isMuted = Optional(true), audio is off
currtime: Optional(00:04) position: Optional(0.022589017850143642)
```
# Issue
Starting the player with 'mp.audio?.isMuted = true' set is expected to use it.4.0Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/VLCKit/-/issues/665[4.0.1a] Player start playing new audio from the time, when last audio file w...2023-02-07T16:37:32ZArsalan Golestanekh[4.0.1a] Player start playing new audio from the time, when last audio file was stoppedHello, I am using prerelease build 4.0.1a.
When I assign new file to mediaPlayer.media, it starts playing it from the time, when last file was stopped.
That's how I stop previous audio:
```
func stopAudioPlayer() {
mediaPla...Hello, I am using prerelease build 4.0.1a.
When I assign new file to mediaPlayer.media, it starts playing it from the time, when last file was stopped.
That's how I stop previous audio:
```
func stopAudioPlayer() {
mediaPlayer.media?.clearStoredCookies()
mediaPlayer.pause()
mediaPlayer.time = VLCTime(number: NSNumber(value: 0))
mediaPlayer.stop()
}
```
That's how I load new audio:
```
func loadMedia(url: url) {
let media = VLCMedia(url: url)
self?.mediaPlayer.media = media
self?.mediaPlayer.minimalTimePeriod = 500
self?.mediaPlayer.timeChangeUpdateInterval = 0.05
self?.mediaPlayer.play()
}
```
Media player time for new audio will start from previous audio player stoppered time.
Example: I listened to 1st audio and stopped it on 3d second, then I start playing new audio, it starts from 3d second, then it resets to 0 and all good.
But I need it to start from 0.
I didn't have this issue with 3.5.0 version. Before I used to do this:
```
func stopAudioPlayer() {
mediaPlayer.stop()
mediaPlayer.media = nil
}
```
and all was good, but now, if I will put nil inside media, app will crash.4.0https://code.videolan.org/videolan/VLCKit/-/issues/664Adding external subtitles would freeze the player, even during download2022-12-08T01:46:07ZmiosgitAdding external subtitles would freeze the player, even during downloadThe download of external subtitles should be performed in the background.
However, for some reason, it freezes the player even during the download.
ie.
```
[DBG] net: connecting to dl.opensubtitles.org port 80
// ... stuck here for a m...The download of external subtitles should be performed in the background.
However, for some reason, it freezes the player even during the download.
ie.
```
[DBG] net: connecting to dl.opensubtitles.org port 80
// ... stuck here for a minute
[WARN] failed to add
```
Expected:
The player should freeze during the subtitles download.4.0https://code.videolan.org/videolan/VLCKit/-/issues/625Forwardport VLCEventObjectManager class and usage2023-05-11T05:43:06ZFelix Paul Kühnefkuehne@videolan.orgForwardport VLCEventObjectManager class and usage!206 added VLCEventObjectManager and deploys it widely. This must be forward-ported to master.!206 added VLCEventObjectManager and deploys it widely. This must be forward-ported to master.4.0Maxime ChapeletMaxime Chapelethttps://code.videolan.org/videolan/VLCKit/-/issues/623Copy libvlc_version.h from compiled libvlc2022-09-13T14:40:24ZFelix Paul Kühnefkuehne@videolan.orgCopy libvlc_version.h from compiled libvlcAt present, libvlc_version.h is a hard-copy in VLCKit that needs to be updated manually. It should be copied dynamically from the libvlc that was build to always reflect the good (sub) versions.At present, libvlc_version.h is a hard-copy in VLCKit that needs to be updated manually. It should be copied dynamically from the libvlc that was build to always reflect the good (sub) versions.4.0Felix Paul Kühnefkuehne@videolan.orgFelix Paul Kühnefkuehne@videolan.orghttps://code.videolan.org/videolan/VLCKit/-/issues/609Incorrect .position/.time in audio playback.2022-09-24T17:09:44ZGeneIncorrect .position/.time in audio playback.MobileVLCKit 3.4.1b9
If I simply pause then resume audio playback, there is a ~1500 ms silence before audio is heard again. It seems like the audio actually silently plays for ~1500 ms then the sound comes at a correct time. Like 1.. 2....MobileVLCKit 3.4.1b9
If I simply pause then resume audio playback, there is a ~1500 ms silence before audio is heard again. It seems like the audio actually silently plays for ~1500 ms then the sound comes at a correct time. Like 1.. 2.. [pause-play] silence 4.. 5.. (seems to be the same as #549).
If I pause audio and read the current time or position, I get invalid values, much earlier in playback. Here is an example:
![Screenshot_2022-05-16_at_17.54.09](/uploads/5150078c8d4ec4e3d805569ded3296bc/Screenshot_2022-05-16_at_17.54.09.png)
I paused the 5.23 seconds recording about half-way in, at about 2500 ms, but I get these values for `.position` and `.time.intValue` respectively: `paused at 0.046502978, 250`. These values are consistent with each other and with the duration of the audio but inconsistent with the actual playback position, they should be about 10 times greater. The `.time` is always in 250 ms increments.
I can get around this issue by manually saving/assigning a correct playback position but it would be nice to fix the issue at the source.
Edited: I previously assumed it was due to WebM format, but it equally affects the AAC m4a too.4.0https://code.videolan.org/videolan/VLCKit/-/issues/582MobileVLCKit: iOS PIP2023-06-28T16:01:46ZJohn LimaMobileVLCKit: iOS PIPHi everyone, I'm working with **MobileVLCKit** integration for iOS and I'd like to know if it's possible to activate picture in picture (PIP).
I tried to search for this info on documentation but I didn't find anything.
Thanks.Hi everyone, I'm working with **MobileVLCKit** integration for iOS and I'd like to know if it's possible to activate picture in picture (PIP).
I tried to search for this info on documentation but I didn't find anything.
Thanks.4.0Maxime ChapeletMaxime Chapelethttps://code.videolan.org/videolan/VLCKit/-/issues/567Media: Expose new libvlc_media_get_stat API2022-05-18T13:25:24ZFelix Paul Kühnefkuehne@videolan.orgMedia: Expose new libvlc_media_get_stat APISee also https://code.videolan.org/videolan/vlc/-/merge_requests/923 and https://code.videolan.org/videolan/libvlcpp/-/commit/aca01ee33ad03d30b4ac42094749ccbcf76f35c7See also https://code.videolan.org/videolan/vlc/-/merge_requests/923 and https://code.videolan.org/videolan/libvlcpp/-/commit/aca01ee33ad03d30b4ac42094749ccbcf76f35c74.0https://code.videolan.org/videolan/VLCKit/-/issues/556iOS How to set custom view or label for subtitle view in VLC Player?2022-01-09T22:21:29ZSun PoohiOS How to set custom view or label for subtitle view in VLC Player?I want to customize subtitle text by changing font size, text color and background color.
I tried with options but it is not working well and can't change in playing mode.
How can I do it.
guard let url = URL(string: self.url) else...I want to customize subtitle text by changing font size, text color and background color.
I tried with options but it is not working well and can't change in playing mode.
How can I do it.
guard let url = URL(string: self.url) else {return}
vlcMedia = VLCMedia(url: url)
vlcMedia.addOption(":network-caching=1000")
vlcMedia.addOption(":freetype-rel-fontsize=10")
vlcMedia.addOption(":freetype-color=#00FF00")
vlcPlayer.media = vlcMedia
vlcPlayer.drawable = player_view
vlcPlayer.delegate = self
vlcPlayer.play()
Is there a way I can get subtitles as a string in VLC?
Thank you.4.0https://code.videolan.org/videolan/VLCKit/-/issues/540Why is the ratio between a player and a thumbnailer different?2021-11-24T12:06:02Zkyungjun MinWhy is the ratio between a player and a thumbnailer different?The player shows the screen at a normal rate. <br>
However, when you use a thumbnailer, the ratio is distorted and comes out.<br>
Why is the ratio different when it's the same video?<br>
### [Player Screen](https://imgur.com/a/6JgaaXI)
...The player shows the screen at a normal rate. <br>
However, when you use a thumbnailer, the ratio is distorted and comes out.<br>
Why is the ratio different when it's the same video?<br>
### [Player Screen](https://imgur.com/a/6JgaaXI)
### [Thumbnailer Screen](https://imgur.com/a/BlOrLzU)4.0https://code.videolan.org/videolan/VLCKit/-/issues/476About: ARIB format subtitles2022-03-13T02:50:13Zotti83About: ARIB format subtitlesI want to play a video file containing subtitles using a video player built into VLC Kit.
However, the subtitle format is ARIB, so the video player cannot display the subtitles.
1. Does VLCkit currently support ARIB format subtitles?
2....I want to play a video file containing subtitles using a video player built into VLC Kit.
However, the subtitle format is ARIB, so the video player cannot display the subtitles.
1. Does VLCkit currently support ARIB format subtitles?
2. Will VLCkit support ARIB subtitles in the future?
Thank you
----
**VLCKit Log**
2021-02-24 19:53:08.366658+0900 BasicPlayerWithPlaylist[18367:6300691] [ERR] Codec arba (ARIB subtitles (A-profile)) is not supported.
2021-02-24 19:53:08.366700+0900 BasicPlayerWithPlaylist[18367:6300691] [ERR] Codec not supported
2021-02-24 19:53:08.366836+0900 BasicPlayerWithPlaylist[18367:6300691] [ERR] VLC could not decode the format "arba" (ARIB subtitles (A-profile))
----
**Mediainfo data for the Video**
Text
ID : 304 (0x130)-1
Menu ID : 1032 (0x408)
Format : ARIB STD B24/B37
Muxing mode : CCIS
Codec ID : 6
Bit rate mode : Constant
Stream size : 0.00 Byte (0%)
Language : Japanese
Encryption : Encrypted
----
[vlckit_log.txt](/uploads/3796421123c3cfbe516ea6aac53a6d27/vlckit_log.txt)[Mediainfo_log.txt](/uploads/1dbc84acc0eee7cc33b62566f967d186/Mediainfo_log.txt)4.0