Hardware improvements for fcp ?
I have recently started working with fcp and my computer is happy for about an hour before it grinds almost to a halt and I need to restart. I have a Mac Pro Quad 2.8ghz with 6gb ram and an ati radeon hd 2600 xt. Is there anything I add to this system to make it work for longer and more quickly ?
Thank you !
oncebrewed wrote:
Would you mind explaining RAID as I don't know what this is. Thanks.
A RAID is when you take several hard drives and "stripe" them so that machine connected to them sees them as one drive. There are several iterations possible. Like RAID 0, RAID 1, RAID 5, others.
RAID 0 = the fastest setup, least secure. Zero redundancy. If one drive fails in the RAID you lose it all.
RAID 5 = slower, redundant safety. If one drive fails, you pull it out, slide in the replacement and the computer will re-build the data for you. A RAID 5 scenario requires hardware.
You can set up a "Soft RAID" RAID 0 right now, if you wanted. Soft RAID = software only. Not controlled by hardware. Or you could get a card to do a full hardware RAID setup.
(MORE)
Similar Messages
-
Optimal Hardware/Software configuration for FCP
I switched from PCs to Macs about 1/2 a year ago to due overwhelming frustration at numerous Windows crashes. I have used Adobe Premiere Pro, Audition and Encore on a PC desktop to do video projects. I now have a 17" 1.67 Powerbook with 2gb of ram and the FCP suite. On a Windows PC, I tweaked everything to get the most out of the computer, partitioned a drive for the video projects, did regular defragging etc etc.
Now that I am on a Mac, I am not sure what needs to be done and what doesn't. I have an external 320 gb Firewire 800 HD that has my iTunes library, some backup files and will be the drive I use to capture video to and edit from. The drive is not partitioned. I have read that partitioning is not really necessary in Mac OS as the file management is much better. I would like to partition it anyway to make a small boot drive in case the hard drive on the Powerbook fails. Is there any benefit to partitioning a drive for video/sound files for FCP projects?
Any other suggestions would be greatly appreciated. I haven't found much information on system optimization for FCP.
Thanks,
Philip
17" 1.67 Powerbook Mac OS X (10.4.3) 2gb of ramCreating a back up system drive is a really good idea and it makes sense to partition your external drive to organize things. The other option is to just purchase another drive for that purpose.
If you want to back up your system, Carbon Copy Cloner is a great app.
There is a very nice program called Volume Works which will do partitioning and resizing partitioning on the fly. Very useful if you like to use partions as a way to organize system drives and media on the same disk.
Since the Mac OS is essentially Unix at the core, it was designed from the ground up as a robust 24/7 OS. There are maintenence things that need to be regularly run ( called CRONs) and there are other disk file and directory maintenence activities listed below. Other than that, if you REALLY enjoy getting down with text based interfaces and mucking about you can find all sorts of folks who are tweeking the system - for example - moving the location of the system swap file on the system disk. Not for the faint hearted...
General things to do ...
Repair Disk Permissions
Repairing disk permissions is simply good system maintenance and should be done as part of ANY upgrade and/or application addition. In addition it should be run regularly just as a preventative tool. It makes sure that the permissions on application files are set to the read/write/execute permissions they should have. Sometimes these are changed through the addition of new/updated programs which can cause varied and difficult to track down problems.
Verify Directory Structure
Disk Warrior is a file directory repair/optimization program. It analyzes and repairs your disk directory structure as well as optimizing it. It will pick up and repair problems that the OSX included Disk Repair Utility can not address. It is an essential tool.
Run the Cron Utilities
If you leave your machine on 24/7 these ought to run on a regular basis. If you turn the machine off at night (or, are like me - during the day - vampires anyone?) you want to force these crititcal utilities to run. Download and run a program such as OnyX which gives you a number of options regarding CRON, flushing caches, prebinding (aka optimizing) dumping log and temp files and so on and so forth.
Down load and have ready to run the application FCP RESCUE. You can find it on Versiontracker. It is another one of the those really useful tools. It deletes all your preference files when they become corrupt. Once the system is working again and set the way you like it, it will back up the same files so the next time things go south, you simply overwrite the corrupt with the good -sounds like batman doesn't it...
Take care of your machine and it will take care of you!
x -
Please help me configure a new 8core for FCP
PLEASE HELP A PC GUY MOVE OVER...
I need to configure a new 8-core for FCP mainly. I need to keep the expense reasonable so dont want to spend extra $$$ if i dont have to.
I edit files from many different camera's these days. Mostly weddings & demos.
I want to go with an 8 core either Two 2.26GHz, OR 2.66GHz? Is the 2.2 fast enough with FCP?
How much ram do i need?
Do I need to stripe 2 sata drives together for the video?
Which video card?
Can you recommend any other software/hardware that will help me?
Here is a link to apples spec page:
http://www.apple.com/macpro/specs.html
THANKSsarecco wrote:
PLEASE HELP A PC GUY MOVE OVER...
Welcome to the family. if you are not familiar with the Macintosh operating system, get yourself a book.
sarecco wrote:
I want to go with an 8 core either Two 2.26GHz, OR 2.66GHz? Is the 2.2 fast enough with FCP?
Either will work fine.
sarecco wrote:
How much ram do i need?
As much as you want but 8G will be adequate. More might not help significantly.
sarecco wrote:
Do I need to stripe 2 sata drives together for the video?
Depends on the video you're trying to use or if you want to do 9 camera multiclips. Maybe.
sarecco wrote:
Which video card?
The stock 4870 is the gold standard for Motion; the current rev of FCP does not care much about the GPU but we are hoping future revs will use the card directly.
sarecco wrote:
Can you recommend any other software/hardware that will help me?
Umm, withotu knowing what you need to do, of course not.
sarecco wrote:
THANKS
No sweat, ignore those other guys. We see this post about once a week around here so you can easily research it on the forum. Strongly urge you to locate your local Macintosh user group.
bogiesan -
My computer - how can I improve for editing
I am a hobby-editor . . . :-)
Still I am curious to get some hints on which parts of my computer could be improved for video editing.
So hopefully someone here could have a look on my hardware!
Here are the specs: (in german!)
Mainboard:
Asus P6X58D-E
ATX, Sockel 1366, Intel X58 / ICH10R Chipsatz, DDR3-1600
Hersteller Asus
Modellbezeichnung P6X58D-E
CPU Sockel 1366
unterstützte Prozessoren Intel Core i7, Core i7 EE, Xeon (Nehalem)
Mainboard Chipsatz Intel X58 / ICH10R
BIOS Hersteller AMI
Formfaktor ATX
QuickPath Interconnect QPI (MT/s) 6400
ATX 12V Anschluss (8polig) 1
ATX 2.0 Anschluss (24polig) 1
Arbeitsspeichertyp DDR3
Arbeitsspeicher maximal (MB) 24576
Speichertakt (MHz) 1600/1333/1066 (2000* *OC)
Speichersteckplätze 6
Triple Channel Unterstützung vorhanden
PCI (32-Bit) Steckplätze 2
PCIe x1 Steckplätze 1
PCIe x16 2.0 Steckplätze 3
SLI / Crossfire Unterstützung 2/3 Way SLI/Quad CrossFireX
SATA Controller Intel ICH10R + Marvell® 9128
SATA Anschlüsse 6x SATAII + 2x SATAIII
SATA Protokolle SATAI-III
Unterstützte RAID Level 0,1,5,10
USB Protokolle USB 3.0/2.0/1.1
USB Anschlüsse extern 4x USB 2.0 intern + 4x USB 2.0 extern + 2x USB 3.0 extern
Soundchip Realtek® ALC889
Audiokanäle 8
SPDIF Ausgang 1x optisch, 1x koaxial
LAN Chipsatz Marvell 88E8056®
LAN-Ports 1
LAN-Transferrate (MBit) 10/100/1000
Anschlüsse für Lüfter 5
PS/2 Schnittstelle (Tastatur) 1
PS/2 Schnittstelle (Maus) 1
IEEE1394a Firewire Schnittstelle 1
CPU:
Intel Core i7 950 (3,06GHz)
Sockel 1366, Box - inkl. Kühler
Hersteller/Modellbezeichnung
Hersteller Intel
Prozessor Modell Core i7
Sockeltyp
Prozessor Typ - Taktfrequenz 950 (3,06GHz)
CPU Modellnummer BX80601950
Sockel 1366
Packungstyp Box - inkl. Kühler
Prozessorkern Bloomfield
Anzahl Kerne 4
QuickPath Interconnect QPI (MT/s) 4800
Cache
Energieverbrauch
L1 Cache (kB) 4 x 64
L2 Cache (kB) 1024
L3 Cache (kB) 8192
Energieverbrauch (Watt) 130
Herstellungsprozess (nm) 45
Kühler Original Intel Box Kühler
RAM:
6144MB DDR3 Kingston KVR1333D3N9K3/6G
DDR3 - 1333 (PC3 - 10600)
Hersteller/Modellbezeichnung
Hersteller Kingston
Herstellernummer KVR1333D3N9K3/6G
Technische Daten
Kapazität (MB) 6144
Kit bestehend aus 3 x 2048MB
Speichertyp DDR3
Speicherstandard DDR3 - 1333 (PC3 - 10600)
Anschluss DIMM 240-Pin
Timings
CAS Latency (CL) 9
RAS-to-CAS-Delay (tRCD) 9
RAS-Precharge-Time (tRP) 9
Festplatte:
1000GB Western Digital Caviar Black WD1002FAEX
3,5", Serial-ATA/600 (6Gb/s), 64 MB Cache
Hersteller Western Digital
Modellbezeichnung Caviar Black WD1002FAEX
Festplattenkapazität (GB) 1000
Formfaktor (Zoll) 3,5
Schnittstelle Serial-ATA/600 (6Gb/s)
Umdrehungen / Min. 7.200
Geräuschentwicklung Betrieb (dB) 33
Geräuschentwicklung StandBy (dB) 28
Max. Transferrate (lesen) MB/s keine Herstellerangaben verfügbar
Max. Transferrate (schreiben) MB/s keine Herstellerangaben verfügbar
Zugriffszeit (ms) 4,2
Cache (MB) 64
Gewicht (g) 690
Abmessungen (BxHxT) (mm) 101,6 x 25,4 x 147
ARLT Garantie Kein OEM. 5 Jahre Herstellergarantie. 3 Jahre ARLT Garantie davon 6 Monate Soforttausch bei Defekt
wegen mehr Platz, größerem Cache, halber Zugriffszeit und SATA3-Schnittstelle, Transfer Rate (Buffer To Disk) 126 MB/s (Max) - sehr guter Wert !
Brenner:
LG GH22NS 22/22/48/32 DVD-Brenner, S-ATA
Super Multi DVD-Brenner ? mit S-ATA Schnittstelle
INTERNER 22x/22x Super Multi DVD-Brenner mit SecurDisk Unterstützung. Der perfekte Alleskönner für Ihren PC. Brennt nicht nur die gängigen Formate (DVD+R/+RW,-R/-RW) sondern auch DVD-RAM und ist außerdem durch die Double/Dual Layer Funktionalität für die Zukunft gerüstetHersteller LG
Modellbezeichnung GH22NS40
Farbe schwarz
Bauart intern
Schnittstelle Serial-ATA
Formfaktor (Zoll) 5,25
Medienaufnahme Schublade
Puffer (Kb) 2048
Zugriffszeit CD-ROM (ms) 120
Zugriffszeit DVD-ROM (ms) 140
Zugriffszeit DVD-RAM (ms) 175
Lesen CD-ROM 48
Lesen DVD-ROM 16
Lesen DVD-RAM 5
Schreiben CD-R 48
Schreiben DVD-R 22
Schreiben DVD+R 22
Schreiben CD-RW 32
Schreiben DVD-RW 6
Schreiben DVD+RW 8
Schreiben DVD-R DL 10
Schreiben DVD+R DL 10
Schreiben DVD-RAM 12
Betriebs-LED vorhanden
Grafikkarte:
Gainward Geforce 9500GT
1024MB, PCIe 2.0, DVI, VGA, HDMI
Hersteller/Modellbezeichnung
Hersteller Gainward
Anschlussart PCI-Express 2.0
Stromversorgung
Maximaler Verbrauch bei Volllast (Watt) 75
GPU
GPU Hersteller NVIDIA
GPU Bezeichnung Geforce 9500GT
GPU Takt (MHz) 550
Kühlung passiv
DirectX Version 10
Shader Model Version 4.0
OpenGL Version 2.0
HDCP Unterstützung Ja
NVIDIA CUDA-fähig Ja
Grafikspeicher
Speicherkapazität (MB) 1024
Speichertyp DDR2
Speichertakt (MHz) 800
Speicheranbindung (Bit) 128
RAMDAC (MHz) 400
Dual-Link Unterstützung ja
unterstützte Auflösungen
Max Auflösung (dpi) 2560x1600x32Bit 60 Hz (Dual Link)
SLI / Crossfire Unterstützung SLI
Anschlüsse
DVI Schnittstelle 1
VGA D-Sub Schnittstelle 1
HDMI Schnittstelle 1
Unterstützte Betriebssysteme Windows XP, Windows Vista
Zubehör Treiber CD
Packungstyp Retail
Netzteil:
550Watt, ARLT Netzteil, 12cm Lüfter, 20+4pin, schwarz
Anschluß Mainboard
ATX (20pin. + 4pin. Buchse)
Anschlüsse Endgeräte
8x 4 Pin Stromanschlüsse (HDD), 2x 4 Pin Stromanschlüsse (FDD), 2x SATA Stromanschlüsse, 1x 6 Pin Stromanschluss (VGA), 1x 4 Pin Stromanschluss (CPU)
Eingänge
230V Netz
Leistung
550Watt
Lüfter
1x 12x12cm silent
Hersteller/Modellbezeichnung
Leistung
Hersteller Arlt
Modellbezeichnung LowNoise
Watt 550
Anschlüsse
ATX 12V Anschluss (4polig) 1
ATX Anschluss (20polig) 1
ATX 2.0 Anschluss (24polig) 1
S-ATA Stromanschlüsse 2
3,5" Anschlüsse 2
5,25" Anschlüsse 8
Eingangsspannung (V) 230
Sonstiges
Bauform ATX
Lüfter (mm) 120
CPU Kühler:
Scythe Mugen 2 Rev. B, CPU Kühler für Sockel 1366/1156/775/478/754/939/AM2/AM2+/AM3/940
Hersteller Scythe
Modellbezeichnung Mugen 2 Rev. B
Material Kühlkörper Kupfer / Aluminium
kompatible CPU Sockel 1366/1156/775/478/754/939/AM2/AM2+/AM3/940
Freigegeben bis (MHz) alle Taktraten
Lüfterdrehzahl (U/Min) 1400
Geräuschentwicklung Betrieb (dB) 26,5
Abmessungen (BxHxT) (mm) 130 x 158 x 100
Gewicht (g) 870
Besonderheiten bis zu 4 Lüfter verbaubar
mitgeliefertes Zubehör Backplates
Schrauben
Installationsanleitung
Luftdurchfluss (m³/h) 126
Kühlung aktiv
Cardreader:
Apacer AE700, Kartenlesegerät 30-in-1
intern, USB, Schwarz
Hersteller Apacer
Modellbezeichnung Embeded Card Reader AE700
Kartenleser Typ 30-in-1
Farbe (Gehäuse) Schwarz
Anschluss USB
Breite (mm) 101
Höhe (mm) 25
Tiefe (mm) 100
lesbare Formate
XD PictureCard ja
mini-/micro SD ja
SD Memorycard ja
MultimediaCard ja
Microdrive ja
MemoryStick ja
CompactFlash ja
OS:
Windows 7 Professional 64-Bit System-Builder-Version
Windows 7 Professional 64-Bit System-Builder-Version, EnglischHersteller Microsoft
Art der Software Betriebssystem
Datenträger DVD
Lizenz (Anzahl PC's) 1
Softwareversion OEM
Produktaktivierung erforderlich ja
2 x eSATA als PCIe:
Delock Controller Karte 2x eSATA, 2xSATA, 1x IDE
2x intern SATA oder 2x eSATA Spezifikation
1x intern PATA IDE Spezifikation
Datentransferraten:
SATA II bis zu 3 Gbps
PATA bis zu 133 Mbps
PCI Express x1 Standard
Unterstützt PCI Express 1.0a Spezifikation
Unterstützt bis zu 2 HDD am SATA, sowie 2 HDD am IDE Controller
Unterstützt Native Command Queue (NCQ)
Raid 0, 1
Festplatte:
2000GB Western Digital RE4-GP (WD2002FYPS)
3,5", Serial-ATA/300 (3Gb/s), 64 MB Cache
Hersteller Western Digital
Modellbezeichnung RE4-GP (WD2002FYPS)
Festplattenkapazität (GB) 2000
Bauart intern
Formfaktor (Zoll) 3,5
Schnittstelle Serial-ATA/300 (3Gb/s)
Umdrehungen / Min. 5.400 - 7.200 (dynamisch je nach Auslastung)
Geräuschentwicklung Betrieb (dB) 29
Geräuschentwicklung StandBy (dB) 25
Max. Transferrate (lesen) MB/s 110
Zugriffszeit (ms) 8,9
Cache (MB) 64
MTBF (h) 1.200.000
Gewicht (g) 730
Abmessungen (BxHxT) (mm) 101,6 x 26,1 x 147
Besonderheiten Energiesparende Green Power Festplatte
Please have a look at my system and give me ideas how I could eventuially improve it.
regardsI agree completely with Harm. A 550W PSU of average (or middling) quality like the one that you have (which, by the way, is based on a CWT PSH or PSH-II platform) is not quite enough to power a power-hungry CPU like the i7-950 of yours, especially if a better-performing GPU such as the the GTX 560 Ti that Harm suggested is added along with two or more additional hard drives. (Your system currently has exactly two hard drives, which is the absolute minimum that you should have in an editing system unless you want performance to be slower than an old Pentium 4. However, one of those hard drives spins at only 5400 RPM - far from ideal for an editing system. You really want all of the hard drives inside that system to spin at 7200 RPM.)
Speaking of the GTX 560 Ti, you don't need the one with 448 cores since a non-overclocked (read: stock speed) i7-950 can't take full advantage of that higher-end GPU (and please note that the GTX 560 Ti 448 is actually a GTX 570 with one of its shader units disabled whereas the standard GTX 560 Ti is a different chip altogether). The standard GTX 560 Ti, with its 384 CUDA cores and a 256-bit DDR5 memory bus width, would suffice. However, if you do wish to overclock the i7-950 (to at least 3.8GHz), then the 448-core edition of the GTX 560 Ti would make more sense. (The 9500 GT that you currently have is not only old, it's slow and weak as well: It has only 32 CUDA cores, and it uses really, really crummy DDR2 RAM with only a 128-bit memory bus width. Such a card would have made the GPU-accelerated mode significantly slower than software-only mode during certain operations within CS5.x.)
By the way, I was wrong six months ago about the Dell systems sold during Fall 2011 that came with a 1.25GB version of the GTX 560 Ti: I had assumed that that card had 448 cores. Well, I did more research, and discovered that there was an OEM version of the GTX 560 Ti which did use a 320-bit DDR5 memory bus - but it had only 352 CUDA cores. It uses the same GPU as the GTX 570 and GTX 580, but with only 11 of its 16 shader units enabled, making it a GTX 570 with four of that GPU's shader units disabled. The Dell version of the GTX 560 Ti is, indeed, only a 352-core unit that was based off of a GTX 570. That made the Dell GTX 560 Ti expensive for what it is - at around $300, it cost as much money as the 448-core version of the GTX 560 Ti sold for around that time. -
Magic stable OS X + QT combo for FCP
I'm self-moderating and moving this from a different thread:
I just ordered my Mac Pro and will be sticking with FCS1 (FCP 5.1.4) for now. I will be doing a fresh and squeeky clean install and want to make sure I have a rock solid system from the start.
Shane Ross wrote:
Magic Combo for FCP 5.1.4:
OS 10.4.11 or 10.4.10
QT 7.1.6. 7.3 also works fine...but 7.1.6 is solid.
What about using with OS X 10.5? I'm looking forward to the OS upgrade which comes along with the hardware.Zebulun wrote:
Do yourself a favor and move to FC Studio 2.
Is that an offer to cover the cost?
I very much want to move to FCS2, I don't need to be talked into it at all -- but it just is not in my budget at the moment. I've already sunk into as much debt as I can handle with the machine upgrade.
Zebulun wrote:
Shane is right with those versions. Do a bit of searching and you'll find folks have problems with QT 7.4.x and FCP 5.1.4
I actually haven't had any issues at all running FCP 5.1.4 with QT 7.4.1 on OS X 10.4.11. So, I guess I'm one of the lucky few. -
Low cost Mackie control surface for FCP 6?
Could someone recommend an inexpensive control surface for FCP 6? Perhaps a bit more expensive than the Berhinger but cheaper than the Tascam.
I've had nothing but grief since installing the FW-1082 and sure could use some help when you return. Here is my current situation (copied from my post on the TASCAM forum which yielded zero responses):
I know the instructions say that the FW-1082 should be plugged directly into the computer interface and that nothing should be plugged into it. Unfortunately my Intel iMac only has one FW400 and one FW800 port. There are other FW400 peripherals such as HDD's and camcorder video capture. With only one FW400 port, it means either I plug the FW-1082 directly into the computer and then connect the FW400 hub to the second FW-1082 port, or plug the hub directly into the computer and the FW-1082 into it. Which ever approach I use, it results in very unstable operation. Sometimes the 'Firewire' LED never lights. Other times the FW-1082 keeps reseting itself every few seconds. Unfortunately I no longer have the option of returning it, so I must find some way to use it with my existing hardware.
I just installed V1.06 of the Mac drivers and 'Fix for Mac OSX 10.4.10 FireWire' from the TASCAM website, restarted the computer, and now the Firewire LED on the FW-1082 never lights. The 'fix' mentioned above rolls back the extension 'AppleFWAudio' to V2.0.1. to resolve a problem with the OSX 10.4.10 update. Unfortunately, I don't know how to restore it to its previous state. Help!
(I apologize for posting this in the FCP forum, but this is the only place I've been able to find fellow FW-1082 users.) -
Not sure which Mac to get for FCP/Avid... Input much appreciated
Hello,
My question is...
I work in television production and I am making the move to get into editing and I plan on purchasing a Mac in the next few weeks, and I am looking for a bit of advice.
Basically I would like to run FCP on the Mac, and if possible I would like to be able to run a version of Avid Express. The projects that I will work on at home will probably be run through FCP, but if possible I would like to be able to install some version of Avid on the same machine to help me learn.
My main question is... I actually have a television that I purchased about 2 1/2 years ago that has an easy option to use it as a computer monitor, and first off I would like to see if you can tell if this will work for a Mac Pro... Secondly, would it make more sense to shell out $2500 for the Mac Pro and use my existing monitor, or should I go with an Imac and not use my monitor. Basically I would like to know if there is a major difference between a low level Mac Pro and a higher end Imac. I am just a bit uncertain what would be the best way to go. My limit would be $2500 but I would really like to keep it around $1700.
I am not sure if my tv/monitor can handle graphically what would be done so I have included a link for the model that I have.
Any input would be appreciated.
Westinghouse LTV-27W2 27" Widescreen Progressive-Scan LCD TVYou might - just - get a Mac Pro for $1700, if you bargain-hunt, but bear in mind that you'll likely need to upgrade the RAM, and certainly get hold of a decent amount of HD space for your media and renders for both programs. Check lowendmac.com regularly - they have a good range of vendors with used and refurb models.
Avid no longer sells Xpress Pro - it's all Media Composer now. Note that Avid does have very specific hardware requirements for supported systems. Not even every Mac Pro is supported (which doesn't necessarily mean it won't run, but you may have problems with it). Pay close attention to which graphics card you're getting, and check that table. Also, Media Composer requires specific versions of OS X and Quicktime, so you'll either have to settle on one system (and avoid Software Updates) or have different systems (eg, two partitions) for the two programs.
Your television has a DVI input, which will work fine with either a Mac Pro or an iMac. Note that Mac Pros still have one DVI port; for an iMac, you'll need the separately-sold Mini DisplayPort to DVI adaptor. Either way, it will be fine for video editing.
Matt
Message was edited by: Matt Clifton -
Hardware Requirements for OC4J and Oracle DB
Hi,
I'm looking for some information about hardware requirements for a server that will run a Oracle DB and OC4J. It will be used for training purpose (about 10 people) and for running small apps using ADF.
Does anybody knows how much hardware I need?
Is there any documents from Oracle for hardware requirements?
Any help appreciated. ThanksGreetings,
We routinely develop and test on a Dell Vostro laptop with OS Windows XP and 4GB RAM. The key is to either run the Oracle db in a VM (10.2.0.1) with at least 0.5 GB RAM for the VM or use the XE db. I personally prefer the XE db as it is lightweight and easily configured or uninstalled. As far as oc4j is concerned, a lot can be done to improve the efficiency by modifying the oc4j.cmd file in driveletter:/oc4j/bin:
set JVMARGS=-Xmx512m -XX:-UseGCOverheadLimit -server -XX:MaxPermSize=256m -Dclass.load.trace=class-not-found -Dclass.load.log.level=finestThe JVM args settings are fully explained at:
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp-Michael
Edited by: Michael F. Hardy on Jan 28, 2009 7:20 AM -
Which Mac to get for FCP/AVid work.... Input appreciated
Hello,
My question is...
I work in television production and I am making the move to get into editing and I plan on purchasing a Mac in the next few weeks, and I am looking for a bit of advice.
Basically I would like to run FCP on the Mac, and if possible I would like to be able to run a version of Avid Express. The projects that I will work on at home will probably be run through FCP, but if possible I would like to be able to install some version of Avid on the same machine to help me learn.
My main question is... I actually have a television that I purchased about 2 1/2 years ago that has an easy option to use it as a computer monitor, and first off I would like to see if you can tell if this will work for a Mac Pro... Secondly, would it make more sense to shell out $2500 for the Mac Pro and use my existing monitor, or should I go with an Imac and not use my monitor. Basically I would like to know if there is a major difference between a low level Mac Pro and a higher end Imac. I am just a bit uncertain what would be the best way to go. My limit would be $2500 but I would really like to keep it around $1700.
I am not sure if my tv/monitor can handle graphically what would be done so I have included a link for the model that I have.
Any input would be appreciated.
Westinghouse LTV-27W2 27" Widescreen Progressive-Scan LCD TVYou might - just - get a Mac Pro for $1700, if you bargain-hunt, but bear in mind that you'll likely need to upgrade the RAM, and certainly get hold of a decent amount of HD space for your media and renders for both programs. Check lowendmac.com regularly - they have a good range of vendors with used and refurb models.
Avid no longer sells Xpress Pro - it's all Media Composer now. Note that Avid does have very specific hardware requirements for supported systems. Not even every Mac Pro is supported (which doesn't necessarily mean it won't run, but you may have problems with it). Pay close attention to which graphics card you're getting, and check that table. Also, Media Composer requires specific versions of OS X and Quicktime, so you'll either have to settle on one system (and avoid Software Updates) or have different systems (eg, two partitions) for the two programs.
Your television has a DVI input, which will work fine with either a Mac Pro or an iMac. Note that Mac Pros still have one DVI port; for an iMac, you'll need the separately-sold Mini DisplayPort to DVI adaptor. Either way, it will be fine for video editing.
Matt
Message was edited by: Matt Clifton -
Raid card and scratch disk setup for FCP
Hi Guys
Can anybody tell me what is the correct way to set up a raid card and scratch disk for FCP if you have 3 x 2TB internal hard drives, with the OS on HD1 and drives 2 and 3 dedicated for FCP
Also with this i also have all my documents i.e work stuff, invoices, pictures, music ect from my old windows PC and used to have them stored on HD2 with the Windows 7 OS on HD1 - i have been told that it is fine if i put this on the same drives as FCP is this correct...?
i only ask this as i have been told how to do it in different ways by 3 people......Thanks John, although i'm rather embarrassed to admit that I am a complete newbie when it comes to technical/computer hardware terms (i.e. I have no idea about different types of disks, other than a HDD and a SSD, or even what the difference is between your media cache and a scratch disk).
This means that after reading all the links you so helpfully provided hasn't done much other than making me feel even more stupid!
The best that I can conclude from what I think that i've understood is that I will use:
Intel 530 Series 120GB SSD for O/S, Programs (and Pagefile?? No idea what this is, sorry)
Samsung 840BW 500GB - Scratch Disk (is this the media cache?) and preview
Seagate Barracuda 3TB HDD - media, projects, and exports
Please tell me if i've got something around the wrong way....
Thanks again. -
Have a 3.06GHz intel core 2 duo for FCP?
I all... I have a 3.06GHz intel core 2 duo IMac that I'm using for FCP.
At 3+ years old, I'm wondering if it's time to invest in a new Imac?
GHz speeds haven't gone up by a lot but I have to believe that speeds have?
Are render times in FCP or Compressor substantially improved to justify this purchase?
Thanks so much for your help!
- BKIf you want flexibility then consider moving up to a mac pro, that'll give you a solid base for a performance boost. Unless theres anything wrong with your current machine, you might want to wait a month or so and see what kind of horsepower the new version FCPX plays best with.
cheers
Andy -
DVD Footage for FCP Edit - how to tell if NTSC or PAL?!
Hi all, apologies if this seems like a stupid request but I have a job at the moment calling for me to extract footage from a DVD, edit in FCP, add a few bits from Motion etc., but I can't work out if the DVD is NTSC or PAL!
I intend to extract the video (no issues with copyright) via DVDxDVPro but am unsure if the DVD has been encoded in NTSC or PAL. The footage it contains is from both the States (NTSC) and South Africa (PAL) so how do I tell? I don't want to go through a standards conversion if I can help it.
I am keen to try to retain as much quality as possible (client can't provide tape) so also any thougts on the best output from DVDxDVPRo for FCP editing?
Thanks all,
Best wishes
MichaelHi Thomas, that's it!
Thanks for this - it clearly shows the TV standard and the resolution plus 4:3 etc., so everything I needed for confirmation.
Glad I cheked because it was in Pal - thought the conversion in DVDxDVPro looked a bit ropey.
This realy baffled me - seemed so simple but couldn't find a way to tell the standard. Learn something everyday...
I am using DVCPro for export from DVDxDVPro - anyone thoughts on a better option?
Thanks again for the answer - and so quick on a Sunday too!
Kind regards
Michael -
I keep getting this screen and before I have to call and pay and wanted to see if there was something that I could do.
Pavilion dv4-1123us get blue screen with "hardware malfunction call hardware vendor for support"
This question was solved.
View Solution.I would say its just a conicidence and recommend you to do a system restore. As its an intermittent problem, you never know if you face same issue once again.
//Click on Kudos and Accept as Solution if my reply was helpful and answered your question//
I am an HP employee!! -
DO i need some extra hardware interface for receving both Audio and video
hi i m doing e-learning project. i have to capture video from webcam and voice from headphone and send to client.
but my code is working fine for either one at a time.
DO i need some extra hardware interface for receving both Audio and video. im using code AVTransmit and AVReceive found from this site only
After running TX
i give Dsound:// & vfw://0 in Media Locater only sound is received and no vedio
and when i give vfw://0 in Media Locater only live video is transmited.
im using JMF1.1.2e.
if any one know the method to run or cause of it plz reply me soon. i will be very thankfull
transmiter/server side code .first run TX on server
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import javax.media.rtp.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
public class Tx extends JFrame implements ActionListener, KeyListener,
MouseListener, WindowListener {
Vector targets;
JList list;
JButton startXmit;
JButton rtcp;
JButton update;
JButton expiration;
JButton statistics;
JButton addTarget;
JButton removeTarget;
JTextField tf_remote_address;
JTextField tf_remote_data_port;
JTextField tf_media_file;
JTextField tf_data_port;
TargetListModel listModel;
AVTransmitter avTransmitter;
RTCPViewer rtcpViewer;
JCheckBox cb_loop;
Config config;
public Tx() {
setTitle( "JMF/RTP Transmitter");
config= new Config();
GridBagLayout gridBagLayout= new GridBagLayout();
GridBagConstraints gbc;
JPanel p= new JPanel();
p.setLayout( gridBagLayout);
JPanel localPanel= createLocalPanel();
gbc= new GridBagConstraints();
gbc.gridx= 0;
gbc.gridy= 0;
gbc.gridwidth= 2;
gbc.anchor= GridBagConstraints.CENTER;
gbc.fill= GridBagConstraints.BOTH;
gbc.insets= new Insets( 10, 5, 0, 0);
((GridBagLayout)p.getLayout()).setConstraints( localPanel, gbc);
p.add( localPanel);
JPanel targetPanel= createTargetPanel();
gbc= new GridBagConstraints();
gbc.gridx= 1;
gbc.gridy= 1;
gbc.weightx= 1.0;
gbc.weighty= 1.0;
gbc.anchor= GridBagConstraints.CENTER;
gbc.fill= GridBagConstraints.BOTH;
gbc.insets= new Insets( 10, 5, 0, 0);
((GridBagLayout)p.getLayout()).setConstraints( targetPanel, gbc);
p.add( targetPanel);
JPanel mediaPanel= createMediaPanel();
gbc= new GridBagConstraints();
gbc.gridx= 1;
gbc.gridy= 2;
gbc.weightx= 1.0;
gbc.weighty= 1.0;
gbc.anchor= GridBagConstraints.CENTER;
gbc.fill= GridBagConstraints.BOTH;
gbc.insets= new Insets( 10, 5, 0, 0);
((GridBagLayout)p.getLayout()).setConstraints( mediaPanel, gbc);
p.add( mediaPanel);
JPanel buttonPanel= new JPanel();
rtcp= new JButton( "RTCP Monitor");
update= new JButton( "Transmission Status");
update.setEnabled( false);
rtcp.addActionListener( this);
update.addActionListener( this);
buttonPanel.add( rtcp);
buttonPanel.add( update);
gbc= new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 3;
gbc.gridwidth= 2;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets( 5,5,10,5);
((GridBagLayout)p.getLayout()).setConstraints( buttonPanel, gbc);
p.add( buttonPanel);
getContentPane().add( p);
list.addMouseListener( this);
addWindowListener( this);
pack();
setVisible( true);
private JPanel createMediaPanel() {
JPanel p= new JPanel();
GridBagLayout gridBagLayout= new GridBagLayout();
GridBagConstraints gbc;
p.setLayout( gridBagLayout);
JLabel label= new JLabel( "Media Locator:");
gbc= new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,10,5);
((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
p.add( label);
tf_media_file= new JTextField( 35);
gbc= new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets( 5,5,10,5);
((GridBagLayout)p.getLayout()).setConstraints( tf_media_file, gbc);
p.add( tf_media_file);
tf_media_file.setText( config.media_locator);
cb_loop= new JCheckBox( "loop");
startXmit= new JButton( "Start Transmission");
startXmit.setEnabled( true);
startXmit.addActionListener( this);
gbc= new GridBagConstraints();
gbc.gridx = 2;
gbc.gridy = 0;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,10,5);
((GridBagLayout)p.getLayout()).setConstraints( cb_loop, gbc);
p.add( cb_loop);
cb_loop.setSelected( true);
cb_loop.addActionListener( this);
gbc= new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 1;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,10,5);
((GridBagLayout)p.getLayout()).setConstraints( startXmit, gbc);
p.add( startXmit);
TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Source");
p.setBorder( titledBorder);
return p;
private JPanel createTargetPanel() {
JPanel p= new JPanel();
GridBagLayout gridBagLayout= new GridBagLayout();
GridBagConstraints gbc;
p.setLayout( gridBagLayout);
targets= new Vector();
for( int i= 0; i < config.targets.size(); i++) {
targets.addElement( config.targets.elementAt( i));
listModel= new TargetListModel( targets);
list= new JList( listModel);
list.addKeyListener( this);
list.setPrototypeCellValue( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
JScrollPane scrollPane= new JScrollPane( list,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
gbc= new GridBagConstraints();
gbc.gridx= 0;
gbc.gridy= 0;
gbc.weightx= 1.0;
gbc.weighty= 1.0;
gbc.anchor= GridBagConstraints.CENTER;
gbc.fill= GridBagConstraints.BOTH;
gbc.insets= new Insets( 10, 5, 0, 0);
((GridBagLayout)p.getLayout()).setConstraints( scrollPane, gbc);
p.add( scrollPane);
JPanel p1= new JPanel();
p1.setLayout( gridBagLayout);
JLabel label= new JLabel( "IP Address:");
gbc= new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,0,5);
((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
p1.add( label);
tf_remote_address= new JTextField( 15);
gbc= new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 0;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,0,5);
((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_address, gbc);
p1.add( tf_remote_address);
label= new JLabel( "Data Port:");
gbc= new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,0,5);
((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
p1.add( label);
tf_remote_data_port= new JTextField( 15);
gbc= new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 1;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,0,5);
((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_data_port, gbc);
p1.add( tf_remote_data_port);
JPanel p2= new JPanel();
addTarget= new JButton( "Add Target");
removeTarget= new JButton( "Remove Target");
p2.add( addTarget);
p2.add( removeTarget);
addTarget.addActionListener( this);
removeTarget.addActionListener( this);
gbc= new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 2;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.gridwidth= 2;
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets( 20,5,0,5);
((GridBagLayout)p1.getLayout()).setConstraints( p2, gbc);
p1.add( p2);
gbc= new GridBagConstraints();
gbc.gridx= 1;
gbc.gridy= 0;
gbc.weightx= 1.0;
gbc.weighty= 1.0;
gbc.anchor= GridBagConstraints.CENTER;
gbc.fill= GridBagConstraints.BOTH;
gbc.insets= new Insets( 10, 5, 0, 0);
((GridBagLayout)p.getLayout()).setConstraints( p1, gbc);
p.add( p1);
TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Targets");
p.setBorder( titledBorder);
return p;
private JPanel createLocalPanel() {
JPanel p= new JPanel();
GridBagLayout gridBagLayout= new GridBagLayout();
GridBagConstraints gbc;
p.setLayout( gridBagLayout);
JLabel label= new JLabel( "IP Address:");
gbc= new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,0,5);
((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
p.add( label);
JTextField tf_local_host= new JTextField( 15);
gbc= new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 0;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,0,5);
((GridBagLayout)p.getLayout()).setConstraints( tf_local_host, gbc);
p.add( tf_local_host);
try {
String host= InetAddress.getLocalHost().getHostAddress();
tf_local_host.setText( host);
} catch( UnknownHostException e) {
label= new JLabel( "Data Port:");
gbc= new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,0,5);
((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
p.add( label);
tf_data_port= new JTextField( 15);
gbc= new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 1;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets( 5,5,10,5);
((GridBagLayout)p.getLayout()).setConstraints( tf_data_port, gbc);
p.add( tf_data_port);
tf_data_port.setText( config.local_data_port);
TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Local Host");
p.setBorder( titledBorder);
return p;
public void actionPerformed( ActionEvent event) {
Object source= event.getSource();
if( source == addTarget) {
String ip= tf_remote_address.getText().trim();
String port= tf_remote_data_port.getText().trim();
String localPort= tf_data_port.getText().trim();
addTargetToList( localPort, ip, port);
if( avTransmitter != null) {
avTransmitter.addTarget( ip, port);
} else if( source == removeTarget) {
int index= list.getSelectedIndex();
if( index != -1) {
Target target= (Target) targets.elementAt( index);
if( avTransmitter != null) {
avTransmitter.removeTarget( target.ip, target.port);
targets.removeElement( target);
listModel.setData( targets);
} else if( source == startXmit) {
if( startXmit.getLabel().equals( "Start Transmission")) {
int data_port= new Integer( tf_data_port.getText()).intValue();
avTransmitter= new AVTransmitter( this, data_port);
avTransmitter.start( tf_media_file.getText().trim(), targets);
avTransmitter.setLooping( cb_loop.isSelected());
startXmit.setLabel( "Stop Transmission");
} else if( startXmit.getLabel().equals( "Stop Transmission")) {
avTransmitter.stop();
avTransmitter= null;
removeNonBaseTargets();
listModel.setData( targets);
startXmit.setLabel( "Start Transmission");
} else if( source == rtcp) {
if( rtcpViewer == null) {
rtcpViewer= new RTCPViewer();
} else {
rtcpViewer.setVisible( true);
rtcpViewer.toFront();
} else if( source == cb_loop) {
if( avTransmitter != null) {
avTransmitter.setLooping( cb_loop.isSelected());
private void removeNonBaseTargets() {
String localPort= tf_data_port.getText().trim();
for( int i= targets.size(); i > 0;) {
Target target= (Target) targets.elementAt( i - 1);
if( !target.localPort.equals( localPort)) {
targets.removeElement( target);
i--;
public void addTargetToList( String localPort,
String ip, String port) {
ListUpdater listUpdater= new ListUpdater( localPort, ip,
port, listModel, targets);
SwingUtilities.invokeLater( listUpdater);
public void rtcpReport( String report) {
if( rtcpViewer != null) {
rtcpViewer.report( report);
public void windowClosing( WindowEvent event) {
config.local_data_port= tf_data_port.getText().trim();
config.targets= new Vector();
for( int i= 0; i < targets.size(); i++) {
Target target= (Target) targets.elementAt( i);
if( target.localPort.equals( config.local_data_port)) {
config.addTarget( target.ip, target.port);
config.media_locator= tf_media_file.getText().trim();
config.write();
System.exit( 0);
public void windowClosed( WindowEvent event) {
public void windowDeiconified( WindowEvent event) {
public void windowIconified( WindowEvent event) {
public void windowActivated( WindowEvent event) {
public void windowDeactivated( WindowEvent event) {
public void windowOpened( WindowEvent event) {
public void keyPressed( KeyEvent event) {
public void keyReleased( KeyEvent event) {
Object source= event.getSource();
if( source == list) {
int index= list.getSelectedIndex();
public void keyTyped( KeyEvent event) {
public void mousePressed( MouseEvent e) {
public void mouseReleased( MouseEvent e) {
public void mouseEntered( MouseEvent e) {
public void mouseExited( MouseEvent e) {
public void mouseClicked( MouseEvent e) {
Object source= e.getSource();
if( source == list) {
int index= list.getSelectedIndex();
if( index != -1) {
Target target= (Target) targets.elementAt( index);
tf_remote_address.setText( target.ip);
tf_remote_data_port.setText( target.port);
int index= list.locationToIndex( e.getPoint());
public static void main( String[] args) {
new Tx();
class TargetListModel extends AbstractListModel {
private Vector options;
public TargetListModel( Vector options) {
this.options= options;
public int getSize() {
int size;
if( options == null) {
size= 0;
} else {
size= options.size();
return size;
public Object getElementAt( int index) {
String name;
if( index < getSize()) {
Target o= (Target)options.elementAt( index);
name= o.localPort + " ---> " + o.ip + ":" + o.port;
} else {
name= null;
return name;
public void setData( Vector data) {
options= data;
fireContentsChanged( this, 0, data.size());
class ListUpdater implements Runnable {
String localPort, ip, port;
TargetListModel listModel;
Vector targets;
public ListUpdater( String localPort, String ip, String port,
TargetListModel listModel, Vector targets) {
this.localPort= localPort;
this.ip= ip;
this.port= port;
this.listModel= listModel;
this.targets= targets;
public void run() {
Target target= new Target( localPort, ip, port);
if( !targetExists( localPort, ip, port)) {
targets.addElement( target);
listModel.setData( targets);
public boolean targetExists( String localPort, String ip, String port) {
boolean exists= false;
for( int i= 0; i < targets.size(); i++) {
Target target= (Target) targets.elementAt( i);
if( target.localPort.equals( localPort)
&& target.ip.equals( ip)
&& target.port.equals( port)) {
exists= true;
break;
return exists;
>>>>>>>>>>>>>>>>>
import java.awt.*;
import java.io.*;
import java.net.InetAddress;
import java.util.*;
import javax.media.*;
import javax.media.protocol.*;
import javax.media.format.*;
import javax.media.control.TrackControl;
import javax.media.control.QualityControl;
import javax.media.rtp.*;
import javax.media.rtp.event.*;
import javax.media.rtp.rtcp.*;
public class AVTransmitter implements ReceiveStreamListener, RemoteListener,
ControllerListener {
// Input MediaLocator
// Can be a file or http or capture source
private MediaLocator locator;
private String ipAddress;
private int portBase;
private Processor processor = null;
private RTPManager rtpMgrs[];
private int localPorts[];
private DataSource dataOutput = null;
private int local_data_port;
private Tx tx;
public AVTransmitter( Tx tx, int data_port) {
this.tx= tx;
local_data_port= data_port;
* Starts the transmission. Returns null if transmission started ok.
* Otherwise it returns a string with the reason why the setup failed.
public synchronized String start( String filename, Vector targets) {
String result;
locator= new MediaLocator( filename);
// Create a processor for the specified media locator
// and program it to output JPEG/RTP
result = createProcessor();
if (result != null) {
return result;
// Create an RTP session to transmit the output of the
// processor to the specified IP address and port no.
result = createTransmitter( targets);
if (result != null) {
processor.close();
processor = null;
return result;
// Start the transmission
processor.start();
return null;
* Use the RTPManager API to create sessions for each media
* track of the processor.
private String createTransmitter( Vector targets) {
// Cheated. Should have checked the type.
PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
PushBufferStream pbss[] = pbds.getStreams();
rtpMgrs = new RTPManager[pbss.length];
localPorts = new int[ pbss.length];
SessionAddress localAddr, destAddr;
InetAddress ipAddr;
SendStream sendStream;
int port;
SourceDescription srcDesList[];
for (int i = 0; i < pbss.length; i++) {
// for (int i = 0; i < 1; i++) {
try {
rtpMgrs[i] = RTPManager.newInstance();
port = local_data_port + 2*i;
localPorts[ i]= port;
localAddr = new SessionAddress( InetAddress.getLocalHost(),
port);
rtpMgrs.initialize( localAddr);
rtpMgrs[i].addReceiveStreamListener(this);
rtpMgrs[i].addRemoteListener(this);
for( int k= 0; k < targets.size(); k++) {
Target target= (Target) targets.elementAt( k);
int targetPort= new Integer( target.port).intValue();
addTarget( localPorts[ i], rtpMgrs[ i], target.ip, targetPort + 2*i);
sendStream = rtpMgrs[i].createSendStream(dataOutput, i);
sendStream.start();
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
return null;
public void addTarget( String ip, String port) {
for (int i= 0; i < rtpMgrs.length; i++) {
int targetPort= new Integer( port).intValue();
addTarget( localPorts[ i], rtpMgrs[ i], ip, targetPort + 2*i);
public void addTarget( int localPort, RTPManager mgr, String ip, int port) {
try {
SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
new Integer( port).intValue());
mgr.addTarget( addr);
tx.addTargetToList( localPort + "", ip, port + "");
} catch( Exception e) {
e.printStackTrace();
public void removeTarget( String ip, String port) {
try {
SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
new Integer( port).intValue());
for (int i= 0; i < rtpMgrs.length; i++) {
rtpMgrs[ i].removeTarget( addr, "target removed from transmitter.");
} catch( Exception e) {
e.printStackTrace();
boolean looping= true;
public void controllerUpdate( ControllerEvent ce) {
System.out.println( ce);
if( ce instanceof DurationUpdateEvent) {
Time duration= ((DurationUpdateEvent) ce).getDuration();
System.out.println( "duration: " + duration.getSeconds());
} else if( ce instanceof EndOfMediaEvent) {
System.out.println( "END OF MEDIA - looping=" + looping);
if( looping) {
processor.setMediaTime( new Time( 0));
processor.start();
public void setLooping( boolean flag) {
looping= flag;
public void update( ReceiveStreamEvent event) {
String timestamp= getTimestamp();
StringBuffer sb= new StringBuffer();
if( event instanceof InactiveReceiveStreamEvent) {
sb.append( timestamp + " Inactive Receive Stream");
} else if( event instanceof ByeEvent) {
sb.append( timestamp + " Bye");
} else {
System.out.println( "ReceiveStreamEvent: "+ event);
tx.rtcpReport( sb.toString());
public void update( RemoteEvent event) {
String timestamp= getTimestamp();
if( event instanceof ReceiverReportEvent) {
ReceiverReport rr= ((ReceiverReportEvent) event).getReport();
StringBuffer sb= new StringBuffer();
sb.append( timestamp + " RR");
if( rr != null) {
Participant participant= rr.getParticipant();
if( participant != null) {
sb.append( " from " + participant.getCNAME());
sb.append( " ssrc=" + rr.getSSRC());
} else {
sb.append( " ssrc=" + rr.getSSRC());
tx.rtcpReport( sb.toString());
} else {
System.out.println( "RemoteEvent: " + event);
private String getTimestamp() {
String timestamp;
Calendar calendar= Calendar.getInstance();
int hour= calendar.get( Calendar.HOUR_OF_DAY);
String hourStr= formatTime( hour);
int minute= calendar.get( Calendar.MINUTE);
String minuteStr= formatTime( minute);
int second= calendar.get( Calendar.SECOND);
String secondStr= formatTime( second);
timestamp= hourStr + ":" + minuteStr + ":" + secondStr;
return timestamp;
private String formatTime( int time) {
String timeStr;
if( time < 10) {
timeStr= "0" + time;
} else {
timeStr= "" + time;
return timeStr;
* Stops the transmission if already started
public void stop() {
synchronized (this) {
if (processor != null) {
processor.stop();
processor.close();
processor = null;
for (int i= 0; i < rtpMgrs.length; i++) {
rtpMgrs[ i].removeTargets( "Session ended.");
rtpMgrs[ i].dispose();
public String createProcessor() {
if (locator == null) {
return "Locator is null";
DataSource ds;
DataSource clone;
try {
ds = javax.media.Manager.createDataSource(locator);
} catch (Exception e) {
return "Couldn't create DataSource";
// Try to create a processor to handle the input media locator
try {
processor = javax.media.Manager.createProcessor(ds);
processor.addControllerListener( this);
} catch (NoProcessorException npe) {
return "Couldn't create processor";
} catch (IOException ioe) {
return "IOException creating processor";
// Wait for it to configure
boolean result = waitForState(processor, Processor.Configured);
if (result == false)
return "Couldn't configure processor";
// Get the tracks from the processor
TrackControl [] tracks = processor.getTrackControls();
// Do we have atleast one track?
if (tracks == null || tracks.length < 1)
return "Couldn't find tracks in processor";
// Set the output content descriptor to RAW_RTP
// This will limit the supported formats reported from
// Track.getSupportedFormats to only valid RTP formats.
ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
processor.setContentDescriptor(cd);
Format supported[];
Format chosen;
boolean atLeastOneTrack = false;
// Program the tracks.
for (int i = 0; i < tracks.length; i++) {
Format format = tracks[i].getFormat();
if (tracks[i].isEnabled()) {
supported = tracks[i].getSupportedFormats();
// We've set the output content to the RAW_RTP.
// So all the supported formats should work with RTP.
// We'll just pick the first one.
if (supported.length > 0) {
if (supported[0] instanceof VideoFormat) {
// For video formats, we should double check the
// sizes since not all formats work in all sizes.
chosen = checkForVideoSizes(tracks[i].getFormat(),
supported[0]);
} else
chosen = supported[0];
tracks[i].setFormat(chosen);
System.err.println("Track " + i + " is set to transmit as:");
System.err.println(" " + chosen);
atLeastOneTrack = true;
} else
tracks[i].setEnabled(false);
} else
tracks[i].setEnabled(false);
if (!atLeastOneTrack)
return "Couldn't set any of the tracks to a valid RTP format";
// Realize the processor. This will internally create a flow
// graph and attempt to create an output datasource for JPEG/RTP
// audio frames.
result = waitForState(processor, Controller.Realized);
if (result == false)
return "Couldn't realize processor";
// Set the JPEG quality to .5.
setJPEGQuality(processor, 0.5f);
// Get the output data source of the processor
dataOutput = processor.getDataOutput();
return null;
static SessionAddress destAddr1, destAddr2;
* For JPEG and H263, we know that they only work for particular
* sizes. So we'll perform extra checking here to make sure they
* are of the right sizes.
Format checkForVideoSizes(Format original, Format supported) {
int width, height;
Dimension size = ((VideoFormat)original).getSize();
Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
Format h263Fmt = new Format(VideoFormat.H263_RTP);
if (supported.matches(jpegFmt)) {
// For JPEG, make sure width and height are divisible by 8.
width = (size.width % 8 == 0 ? size.width :
(int)(size.width / 8) * 8);
height = (size.height % 8 == 0 ? size.height :
(int)(size.height / 8) * 8);
} else if (supported.matches(h263Fmt)) {
// For H.263, we only support some specific sizes.
if (size.width < 128) {
width = 128;
height = 96;
} else if (size.width < 176) {
width = 176;
height = 144;
} else {
width = 352;
height = 288;
} else {
// We don't know this particular format. We'll just
// leave it alone then.
return supported;
return (new VideoFormat(null,
new Dimension(width, height),
Format.NOT_SPECIFIED,
null,
Format.NOT_SPECIFIED)).intersects(supported);
* Setting the encoding quality to the specified value on the JPEG encoder.
* 0.5 is a good default.
void setJPEGQuality(Player p, float val) {
Control cs[] = p.getControls();
QualityControl qc = null;
VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);
// Loop through the controls to find the Quality control for
// the JPEG encoder.
for (int i = 0; i < cs.length; i++) {
if (cs[i] instanceof QualityControl &&
cs[i] instanceof Owned) {
Object owner = ((Owned)cs[i]).getOwner();
// Check to see if the owner is a Codec.
// Then check for the output format.
if (owner instanceof Codec) {
Format fmts[] = ((Codec)owner).getSupportedOutputFormats(null);
for (int j = 0; j < fmts.length; j++) {
if (fmts[j].matches(jpegFmt)) {
qc = (QualityControl)cs[i];
qc.setQuality(val);
System.err.println("- Setting quality to " +
val + " on " + qc);
break;
if (qc != null)
break;
* Convenience methods to handle processor's state changes.
private Integer stateLock = new Integer(0);
private boolean failed = false;
Integer getStateLock() {
return stateLock;
void setFailed() {
failed = true;
private synchronized boolean waitForState(Processor p, int state) {
p.addControllerListener(new StateListener());
failed = false;
// Call the required method on the processor
if (state == Processor.Configured) {
p.configure();
} else if (state == Processor.Realized) {
p.realize();
// Wait until we get an event that confirms the
// success of the method, or a failure event.
// See StateListener inner class
while (p.getState() < state && !failed) {
synchronized (getStateLock()) {
try {
getStateLock().wait();
} catch (InterruptedException ie) {
return false;
if (failed)
return false;
else
return true;
* Inner Classes
class StateListener implements ControllerListener {
public void controllerUpdate(ControllerEvent ce) {
// If there was an error during configure or
// realizI do this all the time, I put my MBP to a 60 inch Sharp. If you have the video working do the simple thing first. Check to make sure your sound is on your TV and Mac. Then if that doesn't work go to System Prefrences and under sound go to a tab called Output and see if your TV is listed and if it is change it to that setting
Hope It Works -
I have redemption codes for FCP from my university - how many machines can I install on?
Do you have these codes because this will be your app? Or is this a "loan" from the school to install on your machine? Do you use your own Apple ID to redeem the code and install the app?
If it is your app, then you may install it on as many Macs as you own or have in your control.
Maybe you are looking for
-
something went wrong with my apple tv and now it says that it is in retail demo mode. How can i fix it? I have had it for more than one year without any problem
-
Dual Desktop Displays? What do I need?
I have a 23 inch display hooked to my MacBook Pro. I recently got a second display. What do I need to run dual monitors? How do I hook up the second one?
-
DB Adapter Synchronous Polling
Hi All I have seen many posts about DB Adapter Polling techniques, but all of them are related to a DBAdapter used to start a BPEL instance (a dbadapter connect to the first receive activity). I need to perform a database polling in the middle of the
-
Can I create a button that will take me to a random slide in a sequence?
Let's say I have three simulations setup and the simulations start on slide 5, 15, and 23. Can I make a button that will randomly jump to one of those slides?
-
Nuance Dragon PC and/or Mac on Intel Macs???
The Nuance advisory relative to system requirements is that Dragon Dictate works on any Mac with an Intel processor. A rep I spoke with at Nuance, assured me that this is the case and applies to booting into Windows on a Mac to use Dragon Naturally.