Giter VIP home page Giter VIP logo

livetv's Introduction

LiveTV

NOTE: Unfortunately, most of the French FTA channels decided to add an auth system to avoid direct usage. This means that most of the channels are now broken. My goal has never been to hack into the online broadcast systems so I won't be implementing a workaround for the channels requiring auth.

Simple OS X application allowing you to watch some live free TV channels (French, English, Italian) fullscreen on your mac.

This product is buggy, mainly for educational purposes and certainly not maintained. Use it at your own risks.

Usage

The easy way:

The "harder way":

Compilation info: There are 2 schemes: LiveTV and Deployment. LiveTV compiles the code in JIT mode and runs it. The Deployment scheme compiles AOT the app and insert the MacRuby framework in the app to make it truly standalone. You first need to build the LiveTV scheme before running the Deployment scheme.

Details

The application is a native OS X Cocoa application written in MacRuby http://macruby.org You can learn more about MacRuby via my book: http://amzn.to/tVx4ng

The code is very simple and straight forward (currently under 100 LOC). If you decide to help the project, check the TODO list and learn more about the following Cocoa classes:

  • NSOutlineView
  • QTMovieView
  • QTMovieView
  • NSProgressIndicator

TODO list

  • Fullscreen mode โˆš (mateus for Snow Leopard and mattetti for Lion)
  • Look into the GC error with unregistered thread. โˆš (mateus)
  • Move the channel buffering indicator to the watched channel or bottom right of the screen.
  • keyboard shortcuts
  • Apple remote control support
  • Airplay support
  • EPG support (to know what's being broadcast, what's coming up next..)
  • Recording (not sure QTMovie allows that. Scheduled recordings might also be nice)
  • Channel updates via internet
  • Add more channels and more languages
  • Custom channels (add your own feeds)
  • Real time chat (for whoever wants to play with Node.js + Heroku)
  • Screenshot
  • Multiple simultaneous players (watch 2 soccer games at the same time)
  • Misc hacks
  • ad supported version so I can become super rich and move back to France (j/k)

Thanks

Thanks to

  • Patrick Crowley (@mokolabs) for the current icon, hopefully, we'll come up with something better ;)
  • Amr Numan Tamimi (@amrnt) for contributing new channels.
  • Mateus (@seanlilmateus) for the SnowLeopard fullscreen mode, thread bug fix and the extraction of the channels into a plist.

livetv's People

Contributors

amrnt avatar mattetti avatar seanlilmateus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

livetv's Issues

Channels to add

threading issue that makes the app randomly beach ball

here is a dump provided by @mokolabs

Date/Time: 2011-12-01 13:50:27 -0800
OS Version: 10.7.2 (Build 11C74)
Architecture: x86_64
Report Version: 9

Command: LiveTV
Path: /Users/USER/Desktop/LiveTV.app/Contents/MacOS/LiveTV
Version: 1.0 (1)
Parent: launchd [333]

PID: 4520
Event: hang
Duration: 2.46s
Steps: 25 (100ms sampling interval)

Pageins: 1031
Pageouts: 0

Process: LiveTV [4520]
Path: /Users/USER/Desktop/LiveTV.app/Contents/MacOS/LiveTV
Architecture: x86_64
UID: 501

Thread 0xb3733 DispatchQueue 1
User stack:
25 start + 52 (in LiveTV) [0x100000ef4]
25 main + 44 (in LiveTV) [0x100000f2c]
25 macruby_main + 385 (in libmacruby.dylib) [0x100151181]
25 ruby_run_node + 80 (in libmacruby.dylib) [0x100030cf0]
25 rb_vm_run + 470 (in libmacruby.dylib) [0x10015a756]
25 ??? [0x1025004e9]
25 ??? [0x102500b64]
25 rb_vm_dispatch + 1081 (in libmacruby.dylib) [0x10013f9c9]
25 ??? [0x102501fcd]
25 NSApplicationMain + 867 (in AppKit) [0x7fff8b8e380c]
25 -[NSApplication run] + 470 (in AppKit) [0x7fff8b66462d]
25 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135 (in AppKit) [0x7fff8b667cf5]
25 _DPSNextEvent + 659 (in AppKit) [0x7fff8b6683f1]
25 BlockUntilNextEventMatchingListInMode + 62 (in HIToolbox) [0x7fff88e734ca]
25 ReceiveNextEventCommon + 355 (in HIToolbox) [0x7fff88e7363d]
25 RunCurrentEventLoopInMode + 277 (in HIToolbox) [0x7fff88e6c3d3]
25 CFRunLoopRunSpecific + 230 (in CoreFoundation) [0x7fff8a36fae6]
25 __CFRunLoopRun + 825 (in CoreFoundation) [0x7fff8a370159]
25 __CFRunLoopDoObservers + 374 (in CoreFoundation) [0x7fff8a39ae96]
25 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23 (in CoreFoundation) [0x7fff8a39af37]
25 _handleWindowNeedsDisplayOrLayoutOrUpdateConstraints + 648 (in AppKit) [0x7fff8b6a407d]
25 -[NSView displayIfNeeded] + 1676 (in AppKit) [0x7fff8b6a493e]
25 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 399 (in AppKit) [0x7fff8b6aadc5]
25 -[NSViewHierarchyLock _lockForWriting:handler:] + 547 (in AppKit) [0x7fff8b6accd4]
25 __psynch_cvwait + 10 (in libsystem_kernel.dylib) [0x7fff891a5bca]
Kernel stack:
25 hndl_unix_scall64 + 19 (in mach_kernel) [0xffffff80002d8363]
25 unix_syscall64 + 507 (in mach_kernel) [0xffffff80005caa9b]
25 psynch_cvwait + 1913 (in mach_kernel) [0xffffff800059f169]
25 ksyn_block_thread_locked + 67 (in mach_kernel) [0xffffff800059a7f3]
25 thread_block_reason + 299 (in mach_kernel) [0xffffff800022f39b]
25 thread_continue + 1661 (in mach_kernel) [0xffffff800022f11d]
25 machine_switch_context + 361 (in mach_kernel) [0xffffff80002c0939]

Thread 0xb37be DispatchQueue 2
User stack:
25 _dispatch_mgr_thread + 54 (in libdispatch.dylib) [0x7fff8e6c014e]
25 kevent + 10 (in libsystem_kernel.dylib) [0x7fff891a67e6]
Kernel stack:
25 kqueue_scan + 416 (in mach_kernel) [0xffffff8000537d40]

Thread 0xb3829
User stack:
25 thread_start + 13 (in libsystem_c.dylib) [0x7fff868b1b75]
25 _pthread_start + 335 (in libsystem_c.dylib) [0x7fff868ae8bf]
25 figThreadMain + 385 (in CoreMedia) [0x7fff8dc13b22]
25 FigThreadGlobalNetworkBufferingRunloop + 119 (in CoreMedia) [0x7fff8dc111ea]
25 CFRunLoopRun + 95 (in CoreFoundation) [0x7fff8a37f7ff]
25 CFRunLoopRunSpecific + 230 (in CoreFoundation) [0x7fff8a36fae6]
25 __CFRunLoopRun + 1204 (in CoreFoundation) [0x7fff8a3702d4]
25 __CFRunLoopServiceMachPort + 188 (in CoreFoundation) [0x7fff8a367b6c]
25 mach_msg_trap + 10 (in libsystem_kernel.dylib) [0x7fff891a467a]
Kernel stack:
25 ipc_mqueue_receive_continue + 0 (in mach_kernel) [0xffffff80002158b0]

Thread 0xb3832
User stack:
25 thread_start + 13 (in libsystem_c.dylib) [0x7fff868b1b75]
25 _pthread_start + 335 (in libsystem_c.dylib) [0x7fff868ae8bf]
25 __select + 10 (in libsystem_kernel.dylib) [0x7fff891a5df2]
Kernel stack:
25 wakeup + 992 (in mach_kernel) [0xffffff80005526d0]

Thread 0xb3859
User stack:
25 thread_start + 13 (in libsystem_c.dylib) [0x7fff868b1b75]
25 _pthread_start + 335 (in libsystem_c.dylib) [0x7fff868ae8bf]
25 figThreadMain + 385 (in CoreMedia) [0x7fff8dc13b22]
25 ??? (in MediaToolbox) [0x7fff85cbade6]
25 FigSemaphoreWaitRelative + 181 (in CoreMedia) [0x7fff8dc12d85]
25 WaitOnCondition + 14 (in CoreMedia) [0x7fff8dc12b8d]
25 __psynch_cvwait + 10 (in libsystem_kernel.dylib) [0x7fff891a5bca]
Kernel stack:
25 hndl_unix_scall64 + 19 (in mach_kernel) [0xffffff80002d8363]
25 unix_syscall64 + 507 (in mach_kernel) [0xffffff80005caa9b]
25 psynch_cvwait + 1913 (in mach_kernel) [0xffffff800059f169]
25 ksyn_block_thread_locked + 67 (in mach_kernel) [0xffffff800059a7f3]
25 thread_block_reason + 299 (in mach_kernel) [0xffffff800022f39b]
25 thread_continue + 1661 (in mach_kernel) [0xffffff800022f11d]
25 machine_switch_context + 361 (in mach_kernel) [0xffffff80002c0939]

Thread 0xb385a
User stack:
25 thread_start + 13 (in libsystem_c.dylib) [0x7fff868b1b75]
25 _pthread_start + 335 (in libsystem_c.dylib) [0x7fff868ae8bf]
25 QTFigVisualContextImageProviderWorkThread + 352 (in QTKit) [0x7fff83f84204]
25 CFRunLoopRun + 95 (in CoreFoundation) [0x7fff8a37f7ff]
25 CFRunLoopRunSpecific + 230 (in CoreFoundation) [0x7fff8a36fae6]
25 __CFRunLoopRun + 1204 (in CoreFoundation) [0x7fff8a3702d4]
25 __CFRunLoopServiceMachPort + 188 (in CoreFoundation) [0x7fff8a367b6c]
25 mach_msg_trap + 10 (in libsystem_kernel.dylib) [0x7fff891a467a]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.